C 프로그램 설계 Week10 강의 인스턴스

3514 단어
신기한 프로그램
==[지침][강제 유형 전환] 두 가지 기술 또는 규칙을 사용했다==
==안에 있는 주소는 다시 써야 할 것 같다==
#include "stdio.h"
main(){
	int a = 3;
	*((int*)0X18FF44) = 8;
	printf("%d
",a); }

2 변수 review
==이 프로그램은 간단하지만 확실히 가장 이해해야 한다==
#include "stdio.h"
main(){
	int a = 5;
	printf(" a = %d 
", a ); printf(" size of a is %d
", sizeof(a) ); printf(" address of a is 0x%x
", &a ); }

3개의 오류 프로그램
==왜 ==
#include "stdio.h"
void main(){
	int * a;
	*a = 10;
	printf(" dereference of a is %d
",*a); }

4수조의 다른 이해
== int a[4] ==
==a의 내용은 무엇입니까?a의 크기는 얼마입니까?
==진지하게 체득하다
#include "stdio.h"

void pz(int arr[]){
	printf("size function: %d
",sizeof(arr)); } void main(){ int a[]={1,2,3}; printf("a=0x%x
",a); printf("sizeof a is %d
",sizeof(a)); pz(a); }

5 포인터와 배열
==두 개의 지식점 [지침이 수조를 가리키는 것] [지침에 정수를 더하는 것] ==
#include "stdio.h"
#define SIZE 4
main(){
	short index;
	short dates[SIZE];
	short *pti=dates; // pointer to integer
	double bills[SIZE];
	double *ptf=bills; // pointer to float 
	printf("%20s(%dB) %10s(%dB)
", "short",sizeof(short),"double",sizeof(double)); for( index = 0 ; index < SIZE ; index ++ ) printf("pointers + %d: %10p %10p
", index, pti+index, ptf+index ); }

또 다른 예
#include "stdio.h"
void main(){
	int a[]={10,3,9,7};
	for(int i=0;i<sizeof(a)/sizeof(int);i++)
		printf("the value of a+%d : %d
",i,*(a+i)); int *pa1,*pa2,*pa3; pa1 = a; pa2 = a+2; pa3 = &a[3]; printf("*pa1=%d,*pa2=%d,*pa3=%d
",*pa1,*pa2,*pa3); printf("pa1=%p,pa2=%p,pa3=%p
",pa1,pa2,pa3); printf("pa2-pa1 = %d
",pa2-pa1); }

6 함수의 전송값, 전송 주소 이해
#include "stdio.h"
void change(int a){
	a=2;
}
void main(){
	int a=1;
	change(a);
	printf("a is %d
",a); }
#include "stdio.h"
void change(int* pa){
	*pa=2;
}
void main(){
	int a = 1;
	int* pa= &a;
	change(pa);
	printf("*pa is %d
",*pa); }

7 함수의 매개 변수가 바늘이고 그룹이 될 때
#include "stdio.h"
void changeArray(int ar[]){
	ar[1] = 88;
}
void changePointer(int *pa){
	*(pa+2) = 101;
}
void main(){
	int a[]={1,2,3};
	changeArray(a);
	changePointer(a);
	for(int i=0;i<sizeof(a)/sizeof(int);i++)
		printf("a[%d]=%d
",i,a[i]); }

8 함수에 대한 포인터
#include "stdio.h"
void welcomeToBaoding(){
	printf("welcome to Baoding
"); } void welcomeToXiAn(){ printf("welcome to XiAn
"); } void main(){ void (*welcome)(); welcome = welcomeToBaoding; welcome(); welcome = welcomeToXiAn; welcome(); }

9 포인터를 이용한 메모리 동적 할당
#include "stdio.h"
#include "stdlib.h"
void main(){
	int length ,i;
	int *p;
	printf("input the num :");
	scanf("%d",&length);
	p = (int*) malloc(length*sizeof(int));
	*p=1;
	*(p+1)=1;
	for(i =2;i<length;i++)
		*(p+i) = *(p+i-2) + *(p+i-1);
	for(i = 0;i<length;i++)
		printf("fabonacci of %d is %d
",i,*(p+i)); }

좋은 웹페이지 즐겨찾기