1 为什么指针之间不要随意赋值呢?-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

学益得智能硬件 来源:学益得智能硬件 2024-03-28 17:13 次阅读

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

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

21a944b2-ece3-11ee-a297-92fbcf53809c.png

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

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

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官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7604

    浏览量

    136680

原文标题:指针之间不要随意赋值

文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    DSP中怎么给地址指针赋值

    地址指针是32位的,int *才16为,赋值会出现截断比如int *souraddr;souraddr =(int *)0x40000;出现这个警告:conversion from integer to smaller pointer查看结果:souraddr=0求大神指
    发表于 01-31 17:11

    SBUF怎么赋值

    要发送出去数据就是给SBUF赋值,可是赋值之后接收到的和赋给SBUF的值不一样?接收到的数据为什么不是5?? 用LabVIEW读取的也是这样 85 85 85。不知道是哪里出错了,
    发表于 08-14 22:46

    c语言指针

    ,是多少,结果是11,因为我们使用*p赋值,就相当于a=11,赋值效果一样的。3:指针指针,是面对于
    发表于 09-19 00:12

    dd的值没有赋值指针

    :unsigned char *gets;将数组的值赋给指针用strcpy函数。strcpy((unsigned char *)gets,(const unsigned char *)dd);这样写对不对。我通过测试,dd的值并没有赋值
    发表于 04-03 00:31

    【设计技巧】指针的使用注意事项:空指针指针赋值、void *指针

    ,比如读、写、调用函数等。 2、永远不要使用“野”指针 前面说了,指针的内容是 地址,是内存地址,一旦你拥有了一个指针,你也就有了权力去通过这个
    发表于 08-20 08:30

    为什么代码会产生来自不兼容指针类型的赋值

    嗨,尽管阅读了几个互联网和论坛的问题/答案,我还是不明白为什么下面的代码会产生“来自不兼容指针类型的赋值”。为什么这个警告的代码运行正常?嫦娥发出同样的警告。问候语,CJ。
    发表于 04-26 12:47

    C语言指针的内容

    是一个指针指针指向一个地址,我们不能把值10赋给一个地址。因此我们如果要赋值只能这样做:b=&a。把a取地址就可以赋值指针了。同时,在
    发表于 12-18 14:10

    给C语言指针赋值有何作用

    给C语言指针赋值有何作用?给普通变量的赋值与给指针变量的赋值有何不同?
    发表于 02-25 06:10

    c语言函数指针定义,指针函数和函数指针的区别

     往往,我们一提到指针函数和函数指针的时候,就有很多人弄不懂。下面就由小编详细为大家介绍C语言中函数指针指针函数和函数指针
    发表于 11-16 15:18 3624次阅读

    深入了解void指针背后的机理

    当使用关键字void声明指针变量时,它将成为通用指针变量。任何数据类型(char,int,float等)的任何变量的地址都可以赋值给void指针变量。
    发表于 05-06 09:49 1357次阅读

    51单片机-指针方法-串口实例

    51单片机-指针1. 指针变量a的指针=变量a的地址再定义一个变量p,来存放a的地址(指针),p就是指针变量,简称
    发表于 11-12 09:51 33次下载
    51单片机-<b class='flag-5'>指针</b>方法-串口实例

    C语言指针的理解使用

    C语言指针的理解使用指针变量的声明给普通变量的赋值对比给指针变量的赋值代*的指针的使用说明
    发表于 01-13 13:42 3次下载
    C语言<b class='flag-5'>指针</b>的理解使用

    求求你,不要再纠结指针了(2)——函数指针

    如果说指针在一些人心中是导致代码“极其不稳定的奇技淫巧”,那么“函数指针”则是导致代码跑飞和艰涩难懂的罪魁祸首。然而,函数指针的定...
    发表于 01-26 19:51 2次下载
    求求你,<b class='flag-5'>不要</b>再纠结<b class='flag-5'>指针</b>了(2)——函数<b class='flag-5'>指针</b>

    阻塞赋值与非阻塞赋值

    ”=“阻塞赋值与”
    的头像 发表于 09-12 09:06 1028次阅读
    阻塞<b class='flag-5'>赋值</b>与非阻塞<b class='flag-5'>赋值</b>

    数组名之间可以直接赋值

    数组之间赋值能不能直接使用等于号?比如这样的代码。 int main(){ int a[5] = {1, 2, 3, 4, 5}; int b[5] = {0}; b = a
    的头像 发表于 11-26 11:23 133次阅读