int a[10] = {1,24,3,4,5};//其中a是静态申请10个int大小空间的首地址
int* p;//声明p是指针,并且只能用来指向int型变量
p = a;//将首地址赋值给指针p
printf("%d\n", p[0]);
printf("%xn\n", a);//a实质上是数组空间的首地址,同时呼应了malloc申请地址返回首地址的用法!
printf("%xn\n", p);
printf("上面测试了p是存放变量地址的变量!\n");
用意:
a实质上是数组空间的首地址,同时呼应了malloc申请地址返回首地址的用法!
int a[10] = {1,24,3,4,5};//其中a是静态申请10个int大小空间的首地址
int* p;//声明p是指针,并且只能用来指向int型变量
p = a;//将首地址赋值给指针p
printf("%d\n", *p);
printf("%d\n", p[0]);
printf("%d\n", a[0]);
printf("上面测试了取地址内数据的两种方式:1、*地址 2、地址【i】\n");
printf("-----------------------\n");
用意:
上面测试了取地址内数据的两种方式:1、*地址 2、地址[i]
int a[10] = {1,24,3,4,5};//其中a是静态申请10个int大小空间的首地址
int* p;//声明p是指针,并且只能用来指向int型变量
p = a;//将首地址赋值给指针p
printf("%d\n", *p+1);//修改p指针所指空间首地址所存数据的值,加1
printf("%d\n", p[1]);
printf("%d\n", (p[1])+1);//修改p指针所指空间首地址偏移1后所存数据的值,加1
printf("上面测试了修改数据的方法!\n");
printf("注意区分int*与*,int*中的*与*p中的*含义不同!\n");
用意:
*p+1 :修改p指针所指空间首地址所存数据的值,加1
(p[1])+1 :修改p指针所指空间首地址偏移1后所存数据的值,加1
上面测试了修改数据的方法!
下面将区分 间接寻址符:* 与 取地址运算符:&
printf("下面将区分 间接寻址符:* 与 取地址运算符:& \n");
int i = 10;
int* j;//声明j是指针,并且只能用来指向int型变量
j = &i;//取int型变量i的地址赋值给int型指针j
printf("%xn\n", &i);
printf("%xn\n", j);
printf("%xn\n", &(*j));//一定程度上,*与&是取反的关系
//printf("%xn\n", &j);
printf("%xn\n", *(&j));//一定程度上,*与&是取反的关系
printf("%d\n", *j);
printf("%d\n", *(&i));//一定程度上,*与&是取反的关系
printf("取地址运算符:& 只能用于函数或对象的取地址!\n");
printf("间接寻址符: * 的操作数(后面跟的参数)必须是指针类型!\n");
用意:
&(*j) ://一定程度上,*与&是取反的关系
*(&j) ://一定程度上,*与&是取反的关系
*(&i) ://一定程度上,*与&是取反的关系
取地址运算符:& 只能用于函数或对象的取地址!
间接寻址符: * 的操作数(后面跟的参数)必须是指针类型 !
补充:注意区分int* p中的*,int* 是一个整体不能分开;*p中的*是间接寻址符。