九千 发表于 2020-4-18 22:43:22

c语言数组指针

int a , (*p1),(*p2) ;   
p1=a;
p2=a;

请问这段的代码的赋值错在哪里?p1可以指向列宽为5 的二维数组,现在指向列宽为 3 的二维数组 ,不可以这样子吗?

love_qj 发表于 2020-4-18 23:09:25

指针数组指向数组地址首地址,后面的【3】表示这个数组的类型大小或者说长度吧

九千 发表于 2020-4-18 23:19:51

love_qj 发表于 2020-4-18 23:09
指针数组指向数组地址首地址,后面的【3】表示这个数组的类型大小或者说长度吧

您好,
int(*p)      是一个数组指针,可以指向一个包含n列的二维数组,也就相当于指向一个含n个元素的一维数组,p本质上是一个指针变量

int *b    是一个指针数组,本质上是一个数组,它由n个指向整型数据的指针变量组成,可以这样理解,int a是一个整型数组,a和 b 都是数组名,只不过a数组的元素是整型数据,b数组的元素是指针变量

倒戈卸甲 发表于 2020-4-18 23:27:48

这个赋值没有问题

九千 发表于 2020-4-18 23:35:57

倒戈卸甲 发表于 2020-4-18 23:27
这个赋值没有问题

这是一道选择题中的一个选项,题目要求选出其中定义和赋值语句都正确的选项,这个是其中的错误选项

倒戈卸甲 发表于 2020-4-18 23:42:11

九千 发表于 2020-4-18 23:35
这是一道选择题中的一个选项,题目要求选出其中定义和赋值语句都正确的选项,这个是其中的错误选项

考试这东西,忍忍就过去了

九千 发表于 2020-4-18 23:44:35

倒戈卸甲 发表于 2020-4-18 23:42
考试这东西,忍忍就过去了

意义不同的,谢谢了,早点休息

倒戈卸甲 发表于 2020-4-18 23:51:40

九千 发表于 2020-4-18 23:44
意义不同的,谢谢了,早点休息

{:10_256:}意义是指你要考证吗?
考计算机证的话就多刷题,少逛论坛了。试题多半还停留在c89的标准,但现在的主流编译器已经支持c11标准,或者其补订的c14标准了

jkluoling1992 发表于 2020-4-19 10:23:18

本帖最后由 jkluoling1992 于 2020-4-19 10:58 编辑

int a 是int

int (*p) 是int(*)

这两个类型数量对不上, a的第二维是3,p的第二维是5,不可赋值

九千 发表于 2020-4-19 11:55:55

倒戈卸甲 发表于 2020-4-18 23:51
意义是指你要考证吗?
考计算机证的话就多刷题,少逛论坛了。试题多半还停留在c89的标准,但 ...

不是考证,好的,以后如果考证的话会的,谢谢您

九千 发表于 2020-4-19 11:59:07

jkluoling1992 发表于 2020-4-19 10:23
int a 是int

int (*p) 是int(*)


我想的是,p的第二维是5 ,a的第二维是3,那p的第二维不是比a的第二维宽,宽度更大不可以这样赋值吗?
还是c语言规定,就必须是相同的维度才可以

倒戈卸甲 发表于 2020-4-19 12:08:11

九千 发表于 2020-4-19 11:59
我想的是,p的第二维是5 ,a的第二维是3,那p的第二维不是比a的第二维宽,宽度更大不可以这样赋值吗?
...

c语言没这种规定。这种问题你听别人说有什么用,自己动手一试不就知道了。昨天那题四个选择都是正确的,能编译通过且打印出正确的值来。最简单的四种情况,对四个变量名直接两层解引用,不进行偏移,你看看能不能得到二维数组的a。

jkluoling1992 发表于 2020-4-19 12:12:14

九千 发表于 2020-4-19 11:59
我想的是,p的第二维是5 ,a的第二维是3,那p的第二维不是比a的第二维宽,宽度更大不可以这样赋值吗?
...

维度都不同,,你想越界访问啊{:10_245:}

九千 发表于 2020-4-19 13:13:43

倒戈卸甲 发表于 2020-4-19 12:08
c语言没这种规定。这种问题你听别人说有什么用,自己动手一试不就知道了。昨天那题四个选择都是正确的, ...

嘤嘤嘤嘤,我编译确实都能通过,两层引用也能得到首行首元素的值,,,,
不管了,,,

九千 发表于 2020-4-19 13:42:10

jkluoling1992 发表于 2020-4-19 12:12
维度都不同,,你想越界访问啊

是会出现莫名其妙的东西

倒戈卸甲 发表于 2020-4-19 13:45:00

本帖最后由 倒戈卸甲 于 2020-4-19 14:11 编辑

九千 发表于 2020-4-19 13:13
嘤嘤嘤嘤,我编译确实都能通过,两层引用也能得到首行首元素的值,,,,
不管了,,,

好了,删掉了。关于数组的数据结构,你学的深了自然会认识到。这些理论上的东西平时也用不上,错误的认知也不影响你编程,何况考试只需按照书本来

倒戈卸甲 发表于 2020-4-19 13:58:19

本帖最后由 倒戈卸甲 于 2020-4-19 14:13 编辑

九千 发表于 2020-4-19 13:13
嘤嘤嘤嘤,我编译确实都能通过,两层引用也能得到首行首元素的值,,,,
不管了,,,
已删除

倒戈卸甲 发表于 2020-4-19 14:01:51

九千 发表于 2020-4-19 13:13
嘤嘤嘤嘤,我编译确实都能通过,两层引用也能得到首行首元素的值,,,,
不管了,,,

给你领悟几分钟,等会儿我会删掉

九千 发表于 2020-4-19 14:52:18

倒戈卸甲 发表于 2020-4-19 13:45
好了,删掉了。关于数组的数据结构,你学的深了自然会认识到。这些理论上的东西平时也用不上,错误的认 ...

确实实际编程也不会这样,就是题目是这样,一遇上就晕的不行
页: [1]
查看完整版本: c语言数组指针