问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言中数组和指针的问题。

发布网友 发布时间:2023-07-19 20:33

我来回答

5个回答

热心网友 时间:2024-10-31 03:44

不怎么对。
首先,不要理会所谓“常指针”的说法。C语言中“常量”有特殊的含义——某些种类的字面量(如类型为int的整数常量);有时也指const限定符;但并不见得和字面上的“不可改变”的“常量”同义(例如const对象事实上是只读对象而不是真正意义上的常量,通过显式转换指针类型可以修改并引起不可预料的后果),滥用这个概念这只会使所要讨论的问题更容易被混淆。另外,建议LZ系统地复习至少这些基本概念:对象、左值、类型和值,如果看不懂以下内容的话。
数组是数组,指针是指针。a是a,a[0]是a[0]。只不过在作为sizeof、&的操作数等有限几个左值上下文之外的场合数组a会退化(隐式转换,结果的类型是元素的指针类型,丢弃了数组类型中的长度)成指向首个元素的指针&a[0],所以容易造成误解。
先考虑LZ最后的表述。
注意C语言中对象可以理解为被占据的连续的内存。值是对象的内容,包含类型和实际的存储表示(对整数类型就是数值,对指针类型一般实现为平坦地址空间元素的整数)。数组对象a的类型是int[3][4],即元素类型为int[4]、具有3个元素的数组类型;a[0]是它的元素,也是数组对象——类型是int[4]。显然类型不同,所以值不同。
a包含a[0],a[1],a[2]。而a[0]包含a[0][0] a[0][1] a[0][2] a[0][3]——正确。
再考虑:LZ之前的陈述。
对象的地址是运行期对象占据的连续内存的首个内存单元(字节)在地址空间的编号。“a,a[0]与a[0][0]是占用着3个不同地址的存储单元”是错的,因为根本就不能确定每个对象只占据一个地址单元。考虑一般实现的内存布局,a、a[0]、a[0][0]的指针&a、&a[0]、&a[0][0]具有不同的值(类型不同),但在存储的数值上相等。注意表达式&a不是左值,不指称一个具有存储的对象——事实上这个表达式的值在编译期即可确定。因此这些指针的值编译器当然知道,但不会在运行期被存储在以上对象内部。当然用一个指针变量在运行期保存这个值是可行的,例如p=&a[0];printf("%p",p);直接使用这个值printf("%p",&a[0]);同义。
a[0]是一个类型为int[4]的数组,是a的第一个元素,它的地址蕴涵于指针&a[0]中。注意&a[0]刚好能通过非左值上下文的作为表达式的a转换得到。 形如p=a;的用法,实际上就是p=&a[0];。

参考资料:原创

热心网友 时间:2024-10-31 03:44

前面的都没什么问题,就是最后“a的值与a[0]相同,知识a包含a[o],a[1],a[2]。而a[0]包含a[0][0] a[0][1] a[0][2] a[0][3]"是错的,这句根本就不成立。追问为什么呢?

追答举个例子吧!int array[2][3]={{1,2,3},{4,5,6}};表示形式array含义为0行元素的地址,这样写可以理解吗?

热心网友 时间:2024-10-31 03:44

2.A[0]是一个2级常指针,指向一个大小为4的一维数组结构。问题是:中3)所以,int A[2][3][4]={0}; A是一个三维数组,其中A[0]和A[

热心网友 时间:2024-10-31 03:45

你可以去看这篇文章,
http://book.51cto.com/art/201103/248068.htm
兴许能对你有所帮助。

参考资料:网络

热心网友 时间:2024-10-31 03:46

你的理解是错误的,你可以再看一下其他的资料。追问为什么呢?您能说说说我的理解是错误的理由么?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
友情就像碳酸是什么意思? 江西省大余到广州坐汽车要多久,哪个人知道告诉我。拜托!!! 从武汉坐火车到江西大余怎样坐? 5 5 5 1=24在中间填四则运算符号怎么填? 比如是5*5那些的 可以用括号... 1 5 5 5=24 5 1 5 5 =24 填上运算符号与括号 使算式成立 ...1四个数字,用加,减,乘,除,括号串联起来,结果得24,每个数字只能用一次... C语言 中间的那段代码输入空格后按回车没反应啊 C语言求解 统计字符的个数 请问我的代码怎么修改才能去掉输入前的空格... 英雄联盟新界面怎么说话,找不到发射的按钮啊 96版秦琼与姑母相认是哪一集 隋唐英雄中秦琼的妻子张紫嫣哪集死的 《隋唐英雄》里秦琼后来哪一集和紫嫣成亲? 抖音怎么删除私信聊天记录? 根据职业病防治法规定什么应当建立劳动者健康监护档案 根据职业病防治法的规定什么应当为劳动者建立职业健康监护档案_百度... 云大附中星耀校区招生办电话 云大附中初中部招生的条件 昆明云大附中中学有什么要求 我想报考云大附中,请问应该做哪些准备?应该怎样复习? 云大附中2010年初中招生什么时候报名 我是2010年初中毕业生,想来读云大附中,分数貌似是够了,就想了解一下... 全世界有多少已知特种部队 已知战斗力如何 在汉字的输出中一般用几针针式打印机 安徽工业经济职业技术学院学费 安徽水利水电职业学院学费多少 秦时明月之诸子百家第34集台词 秦时明月之万里长城中站在少羽旁边的美女叫啥名呀? MTV和KTV有什么不同点 ...后街男孩的中文歌词!机器翻译的请绕道,别浪费你的时间! 下面Java 代码片段创建 ( ) 个对象 我没写辞职信能辞职吗 360安仔小精灵一天能升多少经验 360怎么升级快呢? 摩尔庄园手游草莓奇异旋风怎么做草莓奇异旋风菜谱配方 找11月13日出生...的明星要么名人 11月13日出生的名人?最好是1989年生的 陆压道人怎么死的 芳邻[fāng lín]什么意思?近义词和反义词是什么?英文翻译是什么... 高考之最:最温馨 最幸运 最坚强 最感人 最牛 梦见光脚在街上跑的预兆 梦见光脚跑脚划破的预兆 梦见下大雪光脚去车站回家的预兆 梦见自己光脚穿着一双旧鞋 曾国藩的重大经历 i39001f和i53470对比哪个更好? 女朋友过生日浪漫祝福寄语 路得记第四章, 胎记还是肿瘤? 宝宝出生后就长了血管瘤的一种胎记,以后会有什么影响