C언어 - 포인터의 호환성(Compatibility)
2020. 11. 12. 15:04ㆍ개인공부/C언어
문법적으로 가능하지만 사용하기를 권장하지 않는 내용들.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
///* Pointer Compatibility */
//int n = 5;
//double x;
//x = n; //no error
//int* p1 = &n;
//double* pd = &x;
//pd = p1; // warning
//// int를 double에 넣는 건 가능하나 warning
//int* pt; //그냥 포인터
//int(*pa)[3]; //3개짜리 원소를 가진 배열에 대한 포인터를 담을수 있는 그릇
//int ar1[2][3] = { 3, };
//int ar2[3][2] = { 7, };
//int** p2; // 이중포인터
//pt = &ar1[0][0]; //2차원 배열의 한주소를 담은것
//pt = ar1[0]; //pointer-to-int
//
////pt = ar1; // Warning (Error)
// // ar1은 이차원배열이기 때문에 그냥 포인터에는 담을수 없다.
//pa = ar1; // ar1는 원소가3개짜리인 배열의 배열
// // pa는원소가 3개짜리인 배열의 포인터를 담은 그릇
////pa = ar2; // Warning ar2는 원소2개짜리 배열을 가진 배열이기때문에
//p2 = &pt; // pointer-to-int * // 포인터의 주소를 담을수 있다.
//*p2 = ar2[0]; // pointer-to-int
//p2 = ar2; // Warning (Error)
////Notes
//// -p2 : pointer to pointer to int
//// int에 대한 포인터에 대한 포인터
//// -ar2 : a pointer to array-of-two=ints
//// 2개의 인트를 가진 배열에 대한 포인터 처럼 간주됨
///*Pointer and const*/
//int x = 20;
//const int y = 23;
//int* p1 = &x;
//const int* p2 = &y; // p2자체의 값을 못바꾼다는 것이 아닌 indirection했을때 못바꾼다는 의미
//const int** pp2 = &p1;
////p1 =p2; //Warning (Error)
////*p2 =123; // Error
//// p2 = p1;
//int x2 = 30;
//int* p3 = &x2;
//*pp2 = p3;
//pp2 = &p1;
return 0;
}
출처 : 홍정모의 따라배우는 C언어
'개인공부 > C언어' 카테고리의 다른 글
C언어 - 문자열을 정의 하는 방법 (0) | 2020.11.12 |
---|---|
C언어 - 복합리터럴과 배열 ( Compound Literals ) (0) | 2020.11.12 |
C언어 - 2차원 배열과 포인터 (0) | 2020.11.12 |
C언어 - 포인터의 배열과 2차원 배열 (0) | 2020.11.12 |
C언어 - 포인터에 대한 포인터(2중 포인터)의 작동 원리 (0) | 2020.11.12 |