Development/C, C++(556)
-
Ex05-*& 서로 상쇄
*& 서로 상쇄 *&*&a==a &*&a==&a 메모리 구조 소스코드 #include int main( ) { int num=10; int* ip=NULL; // 포인터 변수 선언 ip=# // 주소 저장 printf("%x %x %d\n", &ip, ip, *ip); //일반적인 사용 형태 printf("%x %x %d\n", &*&ip, *&ip, **&ip); //참고용, 원리 확인용 return 0; } 출력결과
-
Ex21-전체 2차원 배열의 값 출력
전체 2차원 배열의 값 출력 Ex20.c의 문제해결: ()를 통해 연산자 우선순위 지정하여 배열요소 값 정상 출력 *연산자 2차원 배열 요소에 저장된 값을 참조하는 연산자 *연산자는 주소에 저장된 값 참조 *메모리공간의 주소*&array[0][0]*array[0]+0**(array+0)+0 메모리 주소 소스코드 #include int main(void) { int array[2][2] = {10,20,30,40}; printf("%d %d \n", *&array[0][0],*&array[0][1]); // 10, 20 출력 printf("%d %d \n", *&array[1][0],*&array[1][1]); // 30, 40 출력 printf("--------\n"); printf("%d %d \n",..
-
Ex20-2차원 배열의 값 출력
2차원 배열의 값 출력 *연산자 2차원 배열 요소에 저장된 값을 참조하는 연산자 *연산자는 주소에 저장된 값 참조 *메모리공간의 주소*&array[0][0]*array[0]+0**(array+0)+0 소스코드 #include int main(void) { int array[2][2] = {10,20,30,40}; printf("%d %d \n", *&array[0][0],*&array[0][1]); // 10, 20 출력 printf("%d %d \n", *&array[1][0],*&array[1][1]); // 30, 40 출력 //array[0]은 0행을 대표하는 주소이고 이 앞에 *붙어있우므로 그 주소의 값인 10이 됩니다. printf("--------\n"); printf("%d %d \n", ..
-
Warning-incompatible implicit declaration of built-in function 'malloc'
경고메시지 incompatible implicit declaration of built-in function 'malloc' 발생 원인 필요한 header file을 include 하지 않은 경우 발생 해결방법 #include 를 추가
-
void형 포인터
void형 포인터 자료형을 지정하지 않은 포인터 변수 어떠한 자료형의 주소라도 저장할 수 있는 포인터 변수 (주의) * 연산자로 값을 접근하려면 강제 형변환 필요 char* p = NULL;p에 char형 주소 저장int* p = NULL;p에 int형 주소 저장double* p = NULL;p에 double형 주소 저장void* p = NULL;p에 void형 포인터
-
포인터와 함수 - 값에 의한 호출(Call By Value), 주소에 의한 호출(Call By Reference)
Call By Value vs Call By Reference 두 개의 호출방식의 차이 반드시 숙지 값에 의한 호출(Call By Value) 변수(메모리 공간에 저장된 값) 또는 값을 복사해서 함수 호출 Call By Value 도식도 //변수 n의 값을 변수 i에 복사 // 10 주소에 의한 호출(Call By Reference) 주소(메모리 공간의 주소)를 참조해서 함수 호출 Call By Reference 도식도 //변수 n의 주소를 포인터 변수 i에 저장 // i는 포인터 변수로 주소값 저장 // i = &n 함수의 출력, 입력 형태 구분출력 형태입력 형태XX 형태출력 형태 없음입력 형태 없음XO 형태출력 형태 없음입력 형태 있음OX 형태출력 형태 있음입력 형태 없음OO 형태출력 형태 있음입력 ..