有定义语句:int a[4][10],*p,*q[4];且0<=i<4,则错误的赋值是: A)p=a B)q[i]=a[i] C)p=a[i] D)p=&a[
答案都是A但本人曾经见过这样的赋值所以不服气就上机亲自验证了一把#include"stdio.h"main(){inti,j;inta[3][2]={1,2,3,3,4}...
答案都是A 但本人曾经见过这样的赋值所以不服气就上机亲自验证了一把
#include "stdio.h"
main()
{
int i ,j;
int a[3][2]={1,2,3,3,4};
int *p;
p=a;
for(i=0 ; i<3 ;i++)
for(j=0 ; j<2 ; j++)
printf("%d"*p++);
}
编译无错 运行结果是 123340
这是为什么???为什么都说p=a 赋值不对??? 展开
#include "stdio.h"
main()
{
int i ,j;
int a[3][2]={1,2,3,3,4};
int *p;
p=a;
for(i=0 ; i<3 ;i++)
for(j=0 ; j<2 ; j++)
printf("%d"*p++);
}
编译无错 运行结果是 123340
这是为什么???为什么都说p=a 赋值不对??? 展开
5个回答
展开全部
A。p的类型是int *,a的类型是int (*)[10],类型不符,不能赋值。将确定的数值赋给变量的语句叫做赋值语句。各程序设计语言有自己的赋值语句,赋值语句也有不同的类型。所赋“值”可以是数字,也可以是字符串和表达式。
扩展资料:
注意很多语言都使用“等于号”(即“=”)来作为赋值号,所以可能和和平时的理解不同,在使用的时候应予以注意。
1、VB中的赋值格式
例如,给变量a赋值一个数为12,则格式为:a = 12 [注意:变量(即a)只能是一字母,而赋予的值可以是一个式子,当它是式子时,a的值就是这个式子的结果。
2、赋值的开拓
设(F,φ)是一个赋值域,K是F的一个扩域,若K有一个赋值ψ,使得对每个α∈F,都有ψ(α)=φ(α),则ψ称为φ在K上的开拓。关于赋值开拓有存在性定理:F的赋值在F的任何一个扩域上都至少有一个开拓。
展开全部
按C的规则,上题中p=a的指针赋值语句是错误的,它试图把一个二维数组指针赋给一个int型变量指针。指针不只是个地址,它还承载有更多的信息:它指向的元素占多少字节?元素中有无嵌套元素?有无函数?所有元素的存储性质……等等,都包含在指针中。如果指针只是个地址的话,那就没有int*、char*、double*、struct*、FILE*、(*)()……之分了,因为它们都是个地址!相信上面贴的代码在VC++下是不能通过编译的。如果运行结果是123340的话,应该是p=a[0]赋值后的结果,因为题中a[0]是具有10个int元素的数组的首地址,刚好与int *p匹配!当然a[1]、a[2]、a[3]也与p匹配,但不会打出123340来……
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
p=a是正确的!无论是一维数组还是几维数组,数组名代表的是数组的首地址,其根本上就是一个指针,而p又是指针,二者当然可以互相赋值!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你定义的a[3][2]是二维数组,有6个元素,但初始赋值只有5个被赋值了,
最后一个未赋值的默认就是0了。
int *p是一维指针,而a是二维的,故不能赋值。
最后一个未赋值的默认就是0了。
int *p是一维指针,而a是二维的,故不能赋值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不是啊 应该是B错误 A是正确的 数组赋值给了指针要不怎么能输出正确的结果呢 呵呵
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询