0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

為什么指針之間不要隨意賦值呢?

學益得智能硬件 ? 來源:學益得智能硬件 ? 2024-03-28 17:13 ? 次閱讀

指針之間也不能隨意賦值。

看個比較典型的C語言筆試題。

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

有三個定義,問以下賦值語句哪幾個不正確?

大家也不妨把視頻暫停思考一下,把答案留在評論區(qū)。

s 是個二維數(shù)組,三行十列;

k 是個指針,指向有三個元素的數(shù)組;

p 就是個簡單的 char 類型指針。

第一個 p = s。

s 是二維數(shù)組的數(shù)組名,表示二維數(shù)組首行的地址,如果讓 s 加一,會加 10 個字節(jié);

而指針 p 只是個字符指針,p+1 只加了一個字節(jié)。

這兩個含義不一樣,不能賦值。 第二個 p = k。

k 指向的是數(shù)組,p 指向的是字符,同樣也是對不上,不能賦值。

第三個 p = s[0]。

s[0] 表示數(shù)組首行首元素地址,既然是元素的地址,s[0] 加一,就是加 1 個字節(jié)。

p也是元素的地址,這兩個含義一樣,可以賦值。

第四個 k = s。

s 是二維數(shù)組首行的地址,首行有 10 個元素。

k 雖然也指向一維數(shù)組,但是只有三個元素,10 個元素和 3 個元素也對不上,不能賦值。

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



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7581

    瀏覽量

    135610

原文標題:指針之間不要隨意賦值

文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    DSP中怎么給地址指針賦值

    地址指針是32位的,int *才16為,賦值會出現(xiàn)截斷比如int *souraddr;souraddr =(int *)0x40000;出現(xiàn)這個警告:conversion from integer to smaller pointer查看結(jié)果:souraddr=0求大神指
    發(fā)表于 01-31 17:11

    SBUF怎么賦值?

    要發(fā)送出去數(shù)據(jù)就是給SBUF賦值,可是賦值之后接收到的和賦給SBUF的值不一樣?接收到的數(shù)據(jù)為什么不是5?? 用LabVIEW讀取的也是這樣 85 85 85。不知道是哪里出錯了,
    發(fā)表于 08-14 22:46

    c語言指針

    ,是多少,結(jié)果是11,因為我們使用*p賦值,就相當于a=11,賦值效果一樣的。3:指針指針,是面對于
    發(fā)表于 09-19 00:12

    dd的值沒有賦值指針

    :unsigned char *gets;將數(shù)組的值賦給指針用strcpy函數(shù)。strcpy((unsigned char *)gets,(const unsigned char *)dd);這樣寫對不對。我通過測試,dd的值并沒有賦值
    發(fā)表于 04-03 00:31

    【設計技巧】指針的使用注意事項:空指針、指針賦值、void *指針

    ,比如讀、寫、調(diào)用函數(shù)等。 2、永遠不要使用“野”指針 前面說了,指針的內(nèi)容是 地址,是內(nèi)存地址,一旦你擁有了一個指針,你也就有了權力去通過這個
    發(fā)表于 08-20 08:30

    為什么代碼會產(chǎn)生來自不兼容指針類型的賦值

    嗨,盡管閱讀了幾個互聯(lián)網(wǎng)和論壇的問題/答案,我還是不明白為什么下面的代碼會產(chǎn)生“來自不兼容指針類型的賦值”。為什么這個警告的代碼運行正常?嫦娥發(fā)出同樣的警告。問候語,CJ。
    發(fā)表于 04-26 12:47

    C語言指針的內(nèi)容

    是一個指針,指針指向一個地址,我們不能把值10賦給一個地址。因此我們?nèi)绻?b class='flag-5'>賦值只能這樣做:b=&a。把a取地址就可以賦值指針了。同時,在
    發(fā)表于 12-18 14:10

    給C語言指針賦值有何作用

    給C語言指針賦值有何作用?給普通變量的賦值與給指針變量的賦值有何不同?
    發(fā)表于 02-25 06:10

    c語言函數(shù)指針定義,指針函數(shù)和函數(shù)指針的區(qū)別

     往往,我們一提到指針函數(shù)和函數(shù)指針的時候,就有很多人弄不懂。下面就由小編詳細為大家介紹C語言中函數(shù)指針指針函數(shù)和函數(shù)指針
    發(fā)表于 11-16 15:18 ?3597次閱讀

    深入了解void指針背后的機理

    當使用關鍵字void聲明指針變量時,它將成為通用指針變量。任何數(shù)據(jù)類型(char,int,float等)的任何變量的地址都可以賦值給void指針變量。
    發(fā)表于 05-06 09:49 ?1317次閱讀

    VerilogHDL語言:清阻塞賦值和非阻塞賦值

    對于VerilogHDL語言中,經(jīng)常在always模塊中,面臨兩種賦值方式:阻塞賦值和非阻塞賦值。對于初學者,往往非常迷惑這兩種賦值方式的用法,本章節(jié)主要介紹這兩種文章的用法。其實,有
    發(fā)表于 11-19 15:48 ?1092次閱讀

    51單片機-指針方法-串口實例

    51單片機-指針1. 指針變量a的指針=變量a的地址再定義一個變量p,來存放a的地址(指針),p就是指針變量,簡稱
    發(fā)表于 11-12 09:51 ?33次下載
    51單片機-<b class='flag-5'>指針</b>方法-串口實例

    C語言指針的理解使用

    C語言指針的理解使用指針變量的聲明給普通變量的賦值對比給指針變量的賦值代*的指針的使用說明
    發(fā)表于 01-13 13:42 ?3次下載
    C語言<b class='flag-5'>指針</b>的理解使用

    求求你,不要再糾結(jié)指針了(2)——函數(shù)指針

    如果說指針在一些人心中是導致代碼“極其不穩(wěn)定的奇技淫巧”,那么“函數(shù)指針”則是導致代碼跑飛和艱澀難懂的罪魁禍首。然而,函數(shù)指針的定...
    發(fā)表于 01-26 19:51 ?2次下載
    求求你,<b class='flag-5'>不要</b>再糾結(jié)<b class='flag-5'>指針</b>了(2)——函數(shù)<b class='flag-5'>指針</b>

    阻塞賦值與非阻塞賦值

    ”=“阻塞賦值與”
    的頭像 發(fā)表于 09-12 09:06 ?949次閱讀
    阻塞<b class='flag-5'>賦值</b>與非阻塞<b class='flag-5'>賦值</b>