为了账号安全,请及时绑定邮箱和手机立即绑定

定义指针时加括号是起什么作用的

定义指针时加括号是起什么作用的

C
1100001 2015-12-28 23:35:55
#include "stdio.h" main() {  int *p;  int (*q); }以上主函数中两句话有什么区别?**********************************在上面的代码中问题不够明显,所以我现在再添加一段代码#include "stdio.h" main() {  int *p[4];  int (*q)[4]; }这两句有什么区别,这两种指针变量该如何使用?
查看完整描述

3 回答

已采纳
?
努力提升

TA贡献65条经验 获得超15个赞

*p[4] 是一个指针数组,首先它是一个数组,数组中存的是指针,存指针的数组。
(*q)[4] 是数组指针,加括号先与 *结合,它是一个指针,指向一个第一维包含2个元素的2维数组,存数组地址的指针。

查看完整回答
反对 回复 2015-12-29
  • 1100001
    1100001
    也就是说,*p[]中,p是一个数组名,是常量,p[1],p[2]才是指针变量,而(*q)[]中,q仍然是一个指针变量,这个指针变量可以指向一个数组,对否。
  • 慕村3288010
    慕村3288010
    int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。 怎么在这里就变成“就指向一个第一维包含2个元素的2维数组”了,不要误人子弟啊
?
努力提升

TA贡献65条经验 获得超15个赞

是的在同一台电脑中是这样的,但如果代码拷到其他电脑上地址会发生改变

查看完整回答
反对 回复 2015-12-29
?
努力提升

TA贡献65条经验 获得超15个赞

p是数组名,但不是常量量

查看完整回答
反对 回复 2015-12-29
  • 1100001
    1100001
    数组是变量,可以被赋值;但数组名指向的地址不能被改变,也就是说它不是一个可操作数,而且数组名可以直接作为一个值赋给指针变量。
  • 3 回答
  • 0 关注
  • 6125 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信