为什么指针之间不要随意赋值呢?

描述

指针之间也不能随意赋值。

看个比较典型的C语言笔试题。

C

有三个定义,问以下赋值语句哪几个不正确?

大家也不妨把视频暂停思考一下,把答案留在评论区。

s 是个二维数组,三行十列;

k 是个指针,指向有三个元素的数组;

p 就是个简单的 char 类型指针。

第一个 p = s。

s 是二维数组的数组名,表示二维数组首行的地址,如果让 s 加一,会加 10 个字节;

而指针 p 只是个字符指针,p+1 只加了一个字节。

这两个含义不一样,不能赋值。 第二个 p = k。

k 指向的是数组,p 指向的是字符,同样也是对不上,不能赋值。

第三个 p = s[0]。

s[0] 表示数组首行首元素地址,既然是元素的地址,s[0] 加一,就是加 1 个字节。

p也是元素的地址,这两个含义一样,可以赋值。

第四个 k = s。

s 是二维数组首行的地址,首行有 10 个元素。

k 虽然也指向一维数组,但是只有三个元素,10 个元素和 3 个元素也对不上,不能赋值。

所以答案就是,除了第三个,其他的都不能赋值。



审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐
  • C

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分