指针之间也不能随意赋值。
看个比较典型的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 个元素也对不上,不能赋值。
所以答案就是,除了第三个,其他的都不能赋值。
审核编辑:刘清
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网
网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
原文标题:指针之间不要随意赋值
文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。
相关推荐
地址指针是32位的,int *才16为,赋值会出现截断比如int *souraddr;souraddr =(int *)0x40000;出现这个警告:conversion from integer to smaller pointer查看结果:souraddr=0求大神指
发表于 01-31 17:11
要发送出去数据就是给SBUF赋值,可是赋值之后接收到的和赋给SBUF的值不一样呢?接收到的数据为什么不是5呢?? 用LabVIEW读取的也是这样 85 85 85。不知道是哪里出错了,
发表于 08-14 22:46
,是多少呢,结果是11,因为我们使用*p赋值,就相当于a=11,赋值效果一样的。3:指针的指针,是面对于
发表于 09-19 00:12
:unsigned char *gets;将数组的值赋给指针用strcpy函数。strcpy((unsigned char *)gets,(const unsigned char *)dd);这样写对不对。我通过测试,dd的值并没有赋值给
发表于 04-03 00:31
,比如读、写、调用函数等。 2、永远不要使用“野”指针 前面说了,指针的内容是 地址,是内存地址,一旦你拥有了一个指针,你也就有了权力去通过这个指
发表于 08-20 08:30
嗨,尽管阅读了几个互联网和论坛的问题/答案,我还是不明白为什么下面的代码会产生“来自不兼容指针类型的赋值”。为什么这个警告的代码运行正常?嫦娥发出同样的警告。问候语,CJ。
发表于 04-26 12:47
是一个指针,指针指向一个地址,我们不能把值10赋给一个地址。因此我们如果要赋值只能这样做:b=&a。把a取地址就可以赋值给指针了。同时,在
发表于 12-18 14:10
给C语言指针赋值有何作用?给普通变量的赋值与给指针变量的赋值有何不同?
发表于 02-25 06:10
往往,我们一提到指针函数和函数指针的时候,就有很多人弄不懂。下面就由小编详细为大家介绍C语言中函数指针,指针函数和函数指针
发表于 11-16 15:18
•3624次阅读
当使用关键字void声明指针变量时,它将成为通用指针变量。任何数据类型(char,int,float等)的任何变量的地址都可以赋值给void指针变量。
发表于 05-06 09:49
•1357次阅读
51单片机-指针1. 指针变量a的指针=变量a的地址再定义一个变量p,来存放a的地址(指针),p就是指针变量,简称
发表于 11-12 09:51
•33次下载
C语言指针的理解使用指针变量的声明给普通变量的赋值对比给指针变量的赋值代*的指针的使用说明
发表于 01-13 13:42
•3次下载
如果说指针在一些人心中是导致代码“极其不稳定的奇技淫巧”,那么“函数指针”则是导致代码跑飞和艰涩难懂的罪魁祸首。然而,函数指针的定...
发表于 01-26 19:51
•2次下载
”=“阻塞赋值与”
发表于 09-12 09:06
•1028次阅读
数组之间的赋值能不能直接使用等于号?比如这样的代码。 int main(){ int a[5] = {1, 2, 3, 4, 5}; int b[5] = {0}; b = a
发表于 11-26 11:23
•133次阅读
评论