A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

int array[20];
int*ptr=array;
...
//此处略去为整型数组赋值的代码。
...
for(i=0;i<20;i++)
{
(*ptr)++;
ptr++;
}
解释下这段代码

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

5 个回复

正序浏览
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址,int p定义一个整形的变量,用来存放整形数据,同理,int *p定义一个指针类型的变量,用来存放整形数据的地址,程序第2就是定义一个指针类型的变量,数组名就是数组第一个元素的地址,ptr+1,就是第一个元素的地址,ptr+2,就是第2个元素的地址,*(ptr+2),就是取出第2个元素的数据
回复 使用道具 举报
其实你可以这么理解 (*ptr)++; 因为(*ptr)把里面的值取出来了 ++ 加的是(*ptr)+1  ;
而ptr++是把指针后移一个单位的长度 什么叫一个单位呢 就是你之前定义的int*ptr 就能看出来了。希望你能明白
回复 使用道具 举报
本帖最后由 菜鸟de无奈 于 2014-3-12 21:14 编辑

int array[20];  //定义了array这个一维数组,且数组长度为20
int*ptr=array;   //定义指针变量ptr指向array数组存储内容的首个地址
...
//此处略去为整型数组赋值的代码。
...
for(i=0;i<20;i++)  // 是否应该是for(int i = 0; i<20;i++)
{
(*ptr)++;   //对ptr指向的存储地址里的数据进行+1运算
ptr++; //对prt指向的存储地址进行+1运算等同于                //以上2个代码连起来的意思就是,先对ptr指向的数组首地址里的数据进行+1,然后在将ptr自身+1,用于循环对ptr指向地址里的内容进行+1
}

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
int *ptr = array;初始化指针,指向数组的第一个元素。(*ptr)++先执行括号里面的运算。就是数组元素的值加一。
ptr++就是指针向后一位,即指向下一个数组元素。所以整个for循环的作用就是使数组的所有元素的值加一。

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报 1 0
(*ptr)++是把ptr指向的地址里的数据+1,ptr++是把ptr指向的地址+1,即指向下一个地址。
for循环里面只要i满足条件就执行循环语句

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马