『C/C++ポインタ経験総括』ノート
3536 ワード
1: int p; //
2: int *p; //
3: int p[3]; //
4: int *p[3]; // ([] * )
5: int (*p)[3]; //
6: int **p; //
7: int p(int); //
8: int (*p)(int); //
9: int *(*p(int))[3]; //
( ), 。
:
, , 。
1: int *ptr; // :int *
2: char *ptr; // :char *
3: int **ptr; // :int **
4: int (*ptr)[3]; // :int (*)[3]
5: int *(*ptr)[4]; // :int *(*)[4]
:
, * , 。
1: int *ptr; // :int
2: char *ptr; // :char
3: int **ptr; // :int *
4: int (*ptr)[3]; // :int ()[3]
5: int *(*ptr)[4]; // :int *()[4]
:
, , 。 32 , 32 , 32 32 。 , sizeof 。 。
:
sizeof 。 32 , 4 。
:
。 , 。 n , 。 , 。 n*sizeof( ) 。
, , , , 。 , 。
& *:
& ,* 。
&a a ,*p p , p , p 。
:
, 。
, : 、 、 。
, , 。
:
。 0 。
, , , , , , 。
sizeof(array) , array , sizeof 。
*array ,array , 0 。sizeof(*array) 。
=sizeof(array)/sizeof(*array)
sizeof 。
:
。
1: struct mystruct
2: {
3: int a;
4: int b;
5: int c;
6: };
7:
8: struct mystruct ss={20,30,40};
9: struct mystruct *ptr=&ss;
-> 。
C/C++ , , 。 , , 、 , “ ”。 。 *(ptr+n) 。
:
。
1: int fun1(char *,int);
2: int (*pfun1)(char *,int);
3: pfun1=fun1;
4: int a=(*pfun1)(“xxxxxxxx”,8);
。 , 。
:
p, TYPE *TYPE, :(TYPE *)p;
, TYPE *, TYPE, 。 p 。
, , , 。
:
, 。 , , 。
:ptr1=(TYPE*)ptr2 , sizeof(ptr2 ) sizeof(ptr1 ), ptr1 ptr2 。