Development/C, C++(556)
-
Ex50-포인터 변수 상수화 방법 3
포인터 변수 상수화 방법 3 포인터 변수를 통해 메모리 공간의 주소와 값 모두 변경하지 못하게 하기 소스코드 #include int main(void) { char x='A'; char y='B'; //p를 이용해서 다른 주소값으로 바꾸지 마라, 27라인 에러 //*를 이용해서 다른 값으로 바꾸지 마라, 28라인 에러 const char* const p=&x; printf("%c \n", *p); printf("%c \n", x); x='C'; y='D'; printf("%c \n", x); printf("%c \n", y); // p=&y; // 에러 // *p='E'; // 에러 return 0; } 출력결과
-
Ex49-포인터 변수 상수화 방법 2
포인터 변수 상수화 방법 2 포인터 변수를 통해 메모리 공간의 값을 변경하지 못하게 하기 소스코드 #include int main(void) { char x='A'; char y='B'; const char* p=&x; // *p를 상수화, const char* p=&x범위가 상수화 printf("%c \n", *p); printf("%c \n", x); p=&y; //주소는 변경가능 printf("%c \n", *p); printf("%c \n", y); x='Z'; y='Y'; // *p='X'; // 에러(값은 변경불가) printf("%c \n", x); printf("%c \n", y); printf("%c \n", *p); return 0; } 출력결과
-
Ex48-포인터 변수 상수화 방법 1
포인터 변수 상수화 방법 1 포인터 변수에 다른 메모리 공간의 주소를 저장하지 못하게 하기 메모리 구조 char x='A'; char y='B'; char* const p=&x; *p='Z'; 소스코드 #include int main(void) { char x='A'; char y='B'; char* const p=&x; // p를 상수화, const p=&a 범위가 상수화 printf("%c \n", x); printf("%c \n", y); printf("\n"); *p='Z'; // 메모리 공간에 있는 값은 변경가능 printf("%c \n", *p); printf("%c \n", x); printf("%c \n", y); // p=&y; // 에러(포인터 변수에 다른 메모리 공간의 주소를 저장하지..
-
Ex47-포인터 배열 활용하기
포인터 배열 활용하기 문자열 상수의 시작 주소를 저장하는 포인터 배열 활용 메모리 구조 char* p="Happy"; char* q="C coding"; char* array[2]={"Happy", "C coding"}; 소스코드 #include int main(void){ char* p="Happy"; // char* p=&"Happy"; char* q="C coding"; // char* q=&"C coding"; // 포인터 배열 선언: 주소를 저장하는 배열 char* array[2]={"Happy", "C coding"}; //char* array[2]={&"Happy", &"C coding"}; printf("%s \n", p); printf("%s \n", q); printf("--------..
-
Ex46-문자열 상수의 메모리 공간 주소 출력
문자열 상수의 메모리 공간 주소 출력 문자열 상수 "ABCDE"는 이름은 없지만 메모리 공간에 저장되어 있습니다. 메모리 구조 소스코드 #include int main(void) { // "ABCDE": 문자열 상수로 변경 불가 char* p= &"ABCDE"; // char* p="ABCDE"; 와 동일 코드 // "ABCDE" 메모리 공간에 접근만 가능하며 접근하며 접근하여 해당 값 출력 printf("%x \n", p); printf("%x \n", p+1); printf("%x \n", p+2); printf("%x \n", p+3); printf("%x \n", p+4); printf("%x \n", p+5); printf("---------------\n"); printf("%x %x \n",..
-
Ex45-문자열 배열과 문자열 포인터를 통해 문자 변경
문자열 배열과 문자열 포인터를 통해 문자 변경 part1 메모리 구조 part2 메모리 구조 소스코드 #include int main(void) { char array[ ]="ABCDE"; // 문자열배열(문자열변수) // "ABCDE": 문자열 상수로 변경 불가, 이름은 없지만 메모리 공간에 저장되어 있음 // p: 주소를 저장하는 포인터 변수 char* p="ABCDE"; // 문자열 상수의 시작 주소를 p에 저장 //part 1 ------------------------------------------------------------ // p[0]='Z'; // 에러, 문자열 ABCD는 문자열 상수(변경 불가) // array[0]='Z'; // 변경 가능 //part 2 -------------..