指针
int temp={1,2,3,4,5};int (*p2)=&temp;
int i;
for(i=0;i<5;i++){
printf("%d \n",*(*p2 +i));
}
其中*(*p2 +i) 如何理解使用两个* 本帖最后由 倒戈卸甲 于 2019-11-17 22:47 编辑
小甲鱼的带你学c带你飞视频,指针数组与数组指针,指针与二维数组这两节去看一遍吧。还是看后面这一节吧,小甲鱼好像讲指针与二维数组时回顾了数组指针的用法。 倒戈卸甲 发表于 2019-11-17 22:42
小甲鱼的带你学c带你飞视频,指针数组与数组指针,指针与二维数组这两节去看一遍吧。还是看后面这一节吧, ...
就是看完了不太懂。这个代码就是抄他的{:10_266:} 本帖最后由 jackz007 于 2019-11-17 23:19 编辑
这一句
int (*p2) ;
定义 p2 是一个指向末维为 5 的整型数组的指针, p2 的步进单位是 5 个 int,就是说 p2 的数值每增减 1 个单位就是在内存中前进或后退 5 个整型数存储空间的跨度。
* p2 是指针的降维操作, * p2 的类型是 int *,所以,* p2 的步进单位是 1 个整型数的存储空间。所以,* p2 + i 指向从地址 * p2 开始的后面第 i 个整数,那么,* (* p2 + i) 自然就是提取存储单元的数值了。由于
int (*p2)=&temp;
* p2 指向了一维数组 temp,那么,* (* p2 + i)与 temp[ i ] 的表达效果完全一样,就是说,p2 可以像 temp 一样表达和使用。
页:
[1]