有定义语句: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 赋值不对???
展开
 我来答
火虎生活小达人
高能答主

2021-01-26 · 致力于成为全知道最会答题的人
知道大有可为答主
回答量:5246
采纳率:100%
帮助的人:166万
展开全部

A。p的类型是int *,a的类型是int (*)[10],类型不符,不能赋值。将确定的数值赋给变量的语句叫做赋值语句。各程序设计语言有自己的赋值语句,赋值语句也有不同的类型。所赋“值”可以是数字,也可以是字符串和表达式。

扩展资料:

注意很多语言都使用“等于号”(即“=”)来作为赋值号,所以可能和和平时的理解不同,在使用的时候应予以注意。

1、VB中的赋值格式

例如,给变量a赋值一个数为12,则格式为:a = 12 [注意:变量(即a)只能是一字母,而赋予的值可以是一个式子,当它是式子时,a的值就是这个式子的结果。

2、赋值的开拓

设(F,φ)是一个赋值域,K是F的一个扩域,若K有一个赋值ψ,使得对每个α∈F,都有ψ(α)=φ(α),则ψ称为φ在K上的开拓。关于赋值开拓有存在性定理:F的赋值在F的任何一个扩域上都至少有一个开拓。

White_MouseYBZ
2012-03-17 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6591万
展开全部
按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来……
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
墨派638
2012-03-17 · TA获得超过288个赞
知道答主
回答量:192
采纳率:0%
帮助的人:119万
展开全部
p=a是正确的!无论是一维数组还是几维数组,数组名代表的是数组的首地址,其根本上就是一个指针,而p又是指针,二者当然可以互相赋值!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
知识海洋的小学徒
2012-03-17 · TA获得超过889个赞
知道小有建树答主
回答量:278
采纳率:0%
帮助的人:432万
展开全部
你定义的a[3][2]是二维数组,有6个元素,但初始赋值只有5个被赋值了,
最后一个未赋值的默认就是0了。
int *p是一维指针,而a是二维的,故不能赋值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
岭路西
2012-03-24
知道答主
回答量:11
采纳率:0%
帮助的人:1.7万
展开全部
不是啊 应该是B错误 A是正确的 数组赋值给了指针要不怎么能输出正确的结果呢 呵呵
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式