C语言 关于*(p[1]+2)与*(a[1]+2)的差别问题
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/19 00:58:40
C语言 关于*(p[1]+2)与*(a[1]+2)的差别问题
若有定义int a[2][3]={1,2,3,4,5,6};int *p=a;这样的话当我用终端输出时不能输出*(p[1]+2) 它会说有三个错误,只可以输出*(a[1]+2) 可是为什么呢?如果我改为指向一维数组的指针时这两个又都没有编译错误了,为什么啊
如果定义时int *p=a 而程序又不能用p来操作二维数组元素 那么这里的p有什么用?
若有定义int a[2][3]={1,2,3,4,5,6};int *p=a;这样的话当我用终端输出时不能输出*(p[1]+2) 它会说有三个错误,只可以输出*(a[1]+2) 可是为什么呢?如果我改为指向一维数组的指针时这两个又都没有编译错误了,为什么啊
如果定义时int *p=a 而程序又不能用p来操作二维数组元素 那么这里的p有什么用?
没有差别啊,只是符号不同,一个是p,一个是a.
应该是问*(p[1]+2)与(*a[1]+2)的差别吧
如果是的话:*(p[1]+2)是指针p[1]偏移二位后的位置处对应的值.
而(*a[1]+2)是指针a[1]对应的值加上2.
再问: 什么越界问题?
再答: 所以你改为指向一维数组的指针时这两个又都没有编译错误了
再问: 我不知道什么叫越界 能解释一下吗??
再答: 越界就是你本来定义一个数组a[5],你的下标最大只能是4,而你却在代码中写成a[7],这样的操作是属于非法操作。但你这里不属于这个问题。 上次忘了修改下我的回答。你的错误是P是一个一级指针,而你的a是一个二维数组属于二级指针。 将int **p=a 这样做p和a就没什么区别了,最大的区别就是a是一个指针常量 而p是一个指针变量
应该是问*(p[1]+2)与(*a[1]+2)的差别吧
如果是的话:*(p[1]+2)是指针p[1]偏移二位后的位置处对应的值.
而(*a[1]+2)是指针a[1]对应的值加上2.
再问: 什么越界问题?
再答: 所以你改为指向一维数组的指针时这两个又都没有编译错误了
再问: 我不知道什么叫越界 能解释一下吗??
再答: 越界就是你本来定义一个数组a[5],你的下标最大只能是4,而你却在代码中写成a[7],这样的操作是属于非法操作。但你这里不属于这个问题。 上次忘了修改下我的回答。你的错误是P是一个一级指针,而你的a是一个二维数组属于二级指针。 将int **p=a 这样做p和a就没什么区别了,最大的区别就是a是一个指针常量 而p是一个指针变量
C语言 关于*(p[1]+2)与*(a[1]+2)的差别问题
(1/2)一道C语言问题:int a[]={1.2.3.4.5.6.7.8}.*p=a.则表达式*(p+*p++)的值是
C语言中为什么 假如定义一个*p=&a,然后为什么这个*p++与*(p+1)是相等的?
c语言的问题 int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; int (*p)[
c语言*(*(p+2)+1)什么意思
C语言问题:int *p; int a[] = {1,2,3,4,5,6}; *++p += 1; 这句话怎么理解.麻烦
关于c语言的编程问题 设有整数A,B,C,编写程序,打印三个数中的最小者.要求 1 编写2个程序实
C语言编码问题2:其中P+=1,*p2!='\0'
c语言指针p+1与p++有什么不同
关于数字信号处理与C语言结合的问题
关于C语言的一个简单的问题 .if(a
关于C语言的指针的题 写出下列运算表达式使用[]运算的替换形式:1、*(p+5) p[5]2、*ps ps[0]3、**