无锡汽车网

[C语言]求解答这个*p里面是什么

发布时间:2019-09-17

*p是指针,*(p+i)+j是指向二维数组第i行第j个元素的指针,(*p)[3]表示把p声明为指向含有三个元素的数组的指针,指针以内存地址作为其值,2293216,2293296应该都是内存地址。

回复:

p为指向3个元素的一维数组的指针
p+i表示第i个包含3个元素的一维数组的首地址
*(p+i),对p+i解引用,得到p+i的内容,为一维数组p+i的首元素的首地址
*(p+i)+j,一维数组p+i的第j个元素的地址
*(*(p+i)+j),一维数组p+i的第j个元素的内容
如果p指向一个二维数组a[i][j],那么*(*(p+i)+j)等价于a[i][j]

回复:

e=*--p;
过程如下:
1)将p自减1,相当于p = p - 1
2)自减后的p跟*结合,即解引用自减1之后的p指针
3)将2)得到的值赋值给e

e=*p--;
过程如下:
1)先将指针p解引用得到一个值
2)然后将指针p自减1
3)将1)中得到的值赋给e

回复:

p为指向3个元素的一维数组的指针 p+i表示第i个包含3个元素的一维数组的首地址 *(p+i),对p+i解引用,得到p+i的内容,为一维数组p+i的首元素的首地址 *(p+i)+j,一维数组p+i的第j个元素的地址 *(*(p+i)+j),一维数组p+i的第j个元素的内容 如果p指...

回复:

你的疑问恐怕是出在二维数组里吧 例如:int a[3][5],*p; p=a; 上面的第一行表示定义一个指针变量p,下面一行表示p指向数组a的首行 a+1表示下一行首地址 *p等价于*(p+0)等价于p[0] 表示p[0]行首地址 p[0]+1表示p[0][1]的地址 p[0]+2表示p[0][2]...

回复:

(*p)[2]是数组指针,p是一个指针,指向一个数组的指针; *p[2]是指针数组,p是一个数组,装载指针的数组。 先看‘*’符号、'()'符号和‘[]’的优先级,在C语言中,'()'和‘[]’符号是相等的等级,'*'的等级比他们两个低;而'()'和'[]'的结合方向是自...

回复:

*p是指针,*(p+i)+j是指向二维数组第i行第j个元素的指针,(*p)[3]表示把p声明为指向含有三个元素的数组的指针,指针以内存地址作为其值,2293216,2293296应该都是内存地址。

回复:

*p即取s【】中的字母,*p - ‘a’即依次为0,1,2,。。。,用他们的ASCII码相减

上一篇:我这台机子还有没有救了? 下一篇:甲状腺功能减退症是否能用中医治疗好

    返回主页:无锡汽车网

    本文网址:http://0510car.cn/view-208413-1.html
      信息删除