mshd.net
当前位置:首页 >> 在C语言中A是一个数组,*p=A+5有语法错误吗 >>

在C语言中A是一个数组,*p=A+5有语法错误吗

是否有错误,取决于p的类型。 a是数组,那么a的基础类型为A,则根据a的维数,如果是一维数组,那么a的类型为A*, 二维数组,A的类型为A**,依次类推。 无论具体是什么形式,最终a的类型设为P。 这样a+5,根据C语言规则,指针加上常数后,类型不...

如果是int a[10];这里的a是数组的首地址,但是const int*类型,也就是常量指针,它的指向不能修改,所以a++是不允许的。 如果有int *p = a; p++就是指向了下一个整形的地址。 p[5]就是第6个元素。(而不是地址了,是地址对应的整形数)

当a为数组名时,可以当做一维指针进行取值运算,但是由于数组名等同于常量指针,所以不可以对数组名进行赋值运算。 所以当a为数组时, a=任意表达式 这样的计算都是非法的。 而a++,等效于a=a+1, 所以这种表达式一样是非法的,编译的时候会报错。

假设p = a; 则*p = a[ 0 ] = 1 *p + 1 = a[ 0 ] + 1 = 2; p + 1 = &a[ 1 ] //这里的 p + 1 是指针p的指向往后挪了一位 因此 *(p + 1) = a[ 1 ] = 3

因为元素个数从数组的下标a[0]开始算咯 例如你定义一个一维数组a[5]={1,2,3,4,5} 解释:a[5]是一个有5个元素的一位数组! 分别为a[0]=1 a[1]=2 a[2]=3 a[3]=4 a[4]=5 这时如果多出一个a[5]的话,就会溢出,因为你只定义了一个5个元素的一位数组...

在定义指针时,指针变量名前的*号是必须的,不能少,区别于普通变量, 说明当前变量是指针变量,而不是普通的变量。 对于你的问题,我举例说明: 情形一: int a[5]={1,2,3,4,5}; int *p=a;//这是在定义指针变量p的同时就直接给它初始化,即把数...

你好,选B。 int *p = a表示指针p指向数组a的首地址。也可以说是a[0]的地址。所以p+5指向a[5]的地址

首先呢,a是二维数组,不解释。 然后呢,p是一个指针,什么样的指针呢,就是指向一维数组的指针,而且这个一维数组的元素个数呢是5. 然后呢,p=a;就是把p指向a数组。 分析选项: A p+1 .因为p是一维数组指针,所以p每+1就是+1行。错误。 B *(p...

B 是不是a[i]?? //是a[i] C p[i] 是相当于a[i],这不是在获取元素a[i]的地址吗? 为什么C也正确??// p[i] 是相当于a[i] A 中为什么能用用p减a??a[p-a]什么意思?? //p的值就是a,所以p-a的值为0,相当于a[0] D 是不是相当于*a[i], 因而不...

char a[5]; char *p = a // 相当于 char *p = &a[0],区别只是两种不同的写法

网站首页 | 网站地图
All rights reserved Powered by www.mshd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com