int i=10;
int * a = &i;
int * a = NULL;(编译没问题,运行错误,指针所指向地址必须为合法有效的内存地址)
a = (int *)malloc(10*sizeof(int));
a = 1;
int * a =10;(错误写法,给指针赋值必须为地址,*p为所指向变量的值)
int *a=&i;
int * c = a + 15;(a代表数组首地址,右侧表达式表示地址向高位移动15位指针所指类型字节即移动4*5字节)
a的地址是10,c的地址是10+ 4*15,因为a的类型是int *,地址增长时加整型的长度。
char str="ksjdkghdksf";
str是一个数组首地址
数组里面的内容是一个字符串
char * pstr="aslgkjklahjkla";
pstr是指向字符串常量的首地址的指针,编译器将字符串常量放在只读数据段.
注意,是只读数据段里面的数据是不可更改的.