指针之间也不能随意赋值。
看个比较典型的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 个元素也对不上,不能赋值。
所以答案就是,除了第三个,其他的都不能赋值。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !