목록개발 공부 (127)
EASY7
#include void bubble_sort(int arr[], int n); void main() { int arr[]={35,3,12,9,1,20,15}; int i; int n=sizeof(arr)/sizeof(*arr); *arr은 맨처음 원소의 길이 sizeof(int)해도됨. bubble_sort(arr, n); printf("정렬결과 \n"); for (i=0; i
함수포인터 #include void sample1(char *carname); void sample2(char *carname); void sample3(char *carname); void main() { void (*p)(char *carname); int a; char carname[20]; printf("귀하의 차종입력\n"); scanf("\s", carname); printf("메뉴를 선택하세요\n"); scanf("%d", &a); swich(a) { case 1: p=sample1; p(carname); break; case 2: p=sample2; p(carname); break; case 3: p=sample3; p(carname); break; } } void sample1(char ..
함수 호출시 parameter로 포인터 넣기 #include int num_change(int i, int j);/*이거 안하면 warning 뜸 */ void main() { int i=5,j=10; num_change(i,j); /*값이 넘어감*/ printf("i= %d j=%d",i,j); } int num_change(int i, int j) { i+=5; j+=5; return 0; } 이렇게 해도 i=5 j=10이렇게 나옴 main과 num_change의 i, j는 다른 것이기 때문이다. #include void main() { int i=5,j=10; num_change(&i, &j); printf("i= %d j=%d", i, j); } int num_change(int *i, int *..
교수님께서 드디어 이메일을 보내셨다 ㅎㅎ 자, 힘내서 완강하자! #include void main() { int arr[5]={1,2,3,4,5}; int *p_1, *p_2; p_1=arr; p_2=p_1+2; printf("p_1 =%d p_2= %d \n", p_1,p_2 ); printf( "두 공간의 차이 %d \n", p_2-p_1); } 결과 p_1=1440992 p_2=1441000 두공간의 차이 2 /*2칸차이가 나기에*/ printf("%d", int p_2- int p_1);하면 8이 나옴. 주소값에 대한 오해 ox00000000이 1byte(8bits)이다. char은 1byte이다. 2^8은 256이고 문자배열과 포인터 문자배열 자체는 문자열의 시작주소값을 가짐 char *arr;..
배열명은 배열의 첫번째 요소의 주소값을 지정 #include void main() { int arr[5]={1,2,3,4,5}; int *p=arr; 첫번째 요소의 주소가 p에 저장 *p는 1이 됨. int i; for (i=0; i
%d 10진수의 정수형 %f 실수형 float a=7; printf("%f\n", a); 하면 7.000000 소수점자리까지 표시해줌 %e 지수형, 변수값을 Ae+00B 꼴로 나오며 A에 10^B승한 값과 동일 %o 8진수 %x 16진수 %u unsinged int형으로 부호없는 10진수 %g 실수형 자동출력 %p 포인터 주소 %c 하나의 문자로 출력 %s 문자열 string http://blog.naver.com/mcm1092/220158222517 출처
포인터에서 연산작업 덧셈 뺄셈하기 #include void main() { char c='A'; int i=5; char *p_c=&c; int *p_i=&i; printf("c 결과값 %c p_c포인터 정보 %c \n", c,(*p_c)++); B A printf("i 결과값 %c p_i포인터 정보 %c \n", i, *p_i+=1); 6 6 *p_i를 6으로 저장하고 6 6 출력 printf("%c \n", *p_c+1); C } ++ -- 은 오른쪽에서 왼쪽방향으로 계산을 한다. 괄호 유무는 아주 중요하다. (*p)++ , ++*p는 현재 포인터값을 가져와서 그 값 자체를 조각함. *p++는 p의 주소값 3075908이 다음 요소값 3075912를 가리키며 그 주소가 가리키는 내용을 지칭 *(p+2..
이중포인터 : 포인터에 대한 포인터 주로 함수에서 처리된 결과를 다시 반환하고자 할 경우, 동적메모리 할당 시 사용 자료형 **변수명; #include void main() { int a=5, b=10; int *p_1, **p_2; printf("a의 주소 %d \n" ,&a);3078924 printf("p_1의 포인터 결과 %d \n", *p_1); 5 printf("p_2의 결과 %d\n" **p_2); 5 } 이중포인터는 M자형 그냥 포인터는 N자형이구나 #include void main() { int a=5, b=4700; char *c=&a, *d=&b; printf("c포인터 결과 %d\n", *c); printf("d포인터 결과 %d\n", *d); printf("b의 주소 %d \n d..