在16位编译系统上,若有定义inta[]={10,20,30},*p=&a;当执行p++后,下列错误的是()
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/10 11:18:49
在16位编译系统上,若有定义inta[]={10,20,30},*p=&a;当执行p++后,下列错误的是()
A p向高地址移了1个字节 B p向高地址移了1个储存单元
Cp向高地址移了2个字节 C p与a+1等价
A p向高地址移了1个字节 B p向高地址移了1个储存单元
Cp向高地址移了2个字节 C p与a+1等价
A错, p与a+1等价p向高地址移动一个int类型字节数
再问: 为什么啊?不懂耶
再答: p是一个指向int型的指针变量,之所以特意声明指针变量的类型,就是让p指针在指向时,一次指向一个int型变量,而不是其他类型的变量,这也就意味着,p+1中的1不是一个字节单元,而一个int型存储单元,即2字节。而数组a是内存中一片连续的存储区,每个元素都是一个int型单元,p指向a,即数组的起始地址,也就是地址值最小的地址 &a[0],当p+1时,就向地址大的方向移动,即指向a[1]。那么,A选项就错了。 后面三个选项是同一个意思。都是指向其后一个int型元素。a+1相当于&a[1],即a是数组的地址,每个元素为int型,a+1和p+1的含义相同,都是向高地址移动一个int型单元。
再问: 为什么啊?不懂耶
再答: p是一个指向int型的指针变量,之所以特意声明指针变量的类型,就是让p指针在指向时,一次指向一个int型变量,而不是其他类型的变量,这也就意味着,p+1中的1不是一个字节单元,而一个int型存储单元,即2字节。而数组a是内存中一片连续的存储区,每个元素都是一个int型单元,p指向a,即数组的起始地址,也就是地址值最小的地址 &a[0],当p+1时,就向地址大的方向移动,即指向a[1]。那么,A选项就错了。 后面三个选项是同一个意思。都是指向其后一个int型元素。a+1相当于&a[1],即a是数组的地址,每个元素为int型,a+1和p+1的含义相同,都是向高地址移动一个int型单元。
在16位编译系统上,若有定义inta[]={10,20,30},*p=&a;当执行p++后,下列错误的是()
在16位编译系统上,若定义int a[]={10,20,30},*p=&a;当执行p++;后下列叙述错误的是() A.
在16位C编译系统上,若定义long a;,则能给a赋40000的正确语句是______.
6、在16位C编译系统上,若定义long a; ,则能给a赋40000的正确语句是
13.在16位C编译系统上,若定义long a;,则能给a赋40000的正确语句是
若有定义语句“inta【2】【3】,*p【3】;”,则下语句中正确的是 A p=a B p[0]=a C p[0]=&a
定义int a[ ]={10,20,30,40},*p=a;,下列说法错误的是( )
有定义inta[5]={1,2,3,4,5},如有int*p=a,则*p的值,*(p+2)的值
若定义语句:int a,b,c,*p=&c;之后,接着执行下列选项中的语句,则能正确执行的语句是
若已定义:int a[]={1,2,3},*p=a;则执行*p++=5;(*p)++;后a[0],a[1],a[2]的值
c语言中,假设系统是32位的,定义int a = 0;执行语句
设有定义int a[]={0,1,2,3,4},*p;,执行语句p=a+2;后,表达式*p的值为( ) A)1 B)2