久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5887|回復: 19
打印 上一主題 下一主題
收起左側

C語言指針的一點小疑問

  [復制鏈接]
回帖獎勵 50 黑幣 回復本帖可獲得 10 黑幣獎勵! 每人限 1 次
跳轉到指定樓層
樓主
ID:480137 發表于 2019-12-30 11:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
   
1.  
     int b=5;
     int  *a = &b;  

2.
     int b = 5;
    int*    a =&b;

3.

   int b = 5  ,*a;
   a = &b;

這三種寫法有區別嗎

是不是都是把b的地址賦給指針變量a

如果一樣的話 哪種寫法比較好
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:480137 發表于 2019-12-30 11:59 | 只看該作者
還有一個問題  
int *a = &b;   (這是把b的地址賦給指針變量a)

和  *a = &b;  (這是把b的地址賦給指針變量a的存儲的數據)  

為什么含義不一樣呢?  
回復

使用道具 舉報

板凳
ID:677461 發表于 2019-12-30 15:25 | 只看該作者
發表下個人看法,針對第一個問題:
1.以上三個寫法是一樣的。個人比較傾向于第三種寫法。先定義變量,然后賦值。
2.   int *a = &b;是定義一個指針變量a,同時初始化。
*a = &b是一個賦值語句,所以含義不同。
回復

使用道具 舉報

地板
ID:672549 發表于 2019-12-30 15:38 | 只看該作者
三者在運行編譯時的效果是一致的,含義也大致相同
回復

使用道具 舉報

5#
ID:672549 發表于 2019-12-30 15:41 | 只看該作者
三者運行編譯的效果一樣,1和2只是空格格式不同,3是先定義再賦值,最終效果是一樣的,個人喜歡第一種,定義和賦值在一起,少打一行,而且可以防止后面忘記賦值
回復

使用道具 舉報

6#
ID:636210 發表于 2019-12-30 18:09 | 只看該作者
實際上你自己全懂了。這個書寫格式,只有軟件本身認可,試了就知了。沒有文章說明中間空格就不是一個定義詞來的。如*  A,或:=    some;前者就是:*A,空了也是*A,等于后面的空好幾個也是一個some.
回復

使用道具 舉報

7#
ID:677920 發表于 2019-12-30 21:47 | 只看該作者
一個意思吧,第一種更好一點
回復

使用道具 舉報

8#
ID:130230 發表于 2019-12-31 16:15 | 只看該作者
結果一樣,第一種和第二種完全一樣。個人決定第三種寫法比較好。
回復

使用道具 舉報

9#
ID:679004 發表于 2020-1-1 18:05 | 只看該作者
都一樣,我覺得第一種好點
回復

使用道具 舉報

10#
ID:149451 發表于 2020-1-3 08:38 | 只看該作者
這個看個人習慣,以及代碼作用——是否有他人需要,選個通俗易懂的就OK
回復

使用道具 舉報

11#
ID:680221 發表于 2020-1-3 09:51 | 只看該作者
三個寫法都一樣,一般做法是第一種,特別是在一行中定義多個變量時,簡單明了,能有效區分哪些是數據變量,哪些是指針變量。至于說補充的問題,如果是單獨一行來寫,前面沒有變量類型限定符 則*a將會被編譯器認為是一個整體,表示a指針指向的int變量,也是常規的指針用法,但是你這樣寫的話,如果a指針沒有初始化,會導致程序出現無法預測的問題,即野指針問題。
回復

使用道具 舉報

12#
ID:680594 發表于 2020-1-3 17:21 | 只看該作者
結果完全一樣。個人決定第三種寫法比較好。先定義變量,然后賦值。清晰明了
回復

使用道具 舉報

13#
ID:680657 發表于 2020-1-3 18:51 | 只看該作者
三種寫法都一樣,都是把b的地址賦給指針變量a,一般是寫作第一種
回復

使用道具 舉報

14#
ID:475247 發表于 2020-1-3 19:29 | 只看該作者
書寫規范的代碼讓人看了賞心悅目,代碼的可讀性強。書寫規范的代碼無論對自己對別人都有好處。
回復

使用道具 舉報

15#
ID:479101 發表于 2020-1-3 20:24 | 只看該作者
除了第三種,我不是很贊同這樣的寫法以外,第1 、2 種寫法都可以。這是因為第三種會存在野指針的問題,雖然在你的編譯器當中會編譯通過,但是可能會導致出現不可預測的錯誤,畢竟你在定義*a的時候并沒有初始化給它,但是在內存中會劃分了某個區域給它,而這個區域的話,有可能存放著其他的數據,可能會導致一系列不可預測的錯誤發生。或者你在定義*a時直接賦值為空,即 int * a = NULL;然后再進行下一步操作,如:a = &b;
回復

使用道具 舉報

16#
ID:676777 發表于 2020-1-3 22:06 | 只看該作者
則三種寫法是一樣的,但是至于哪種比較好,各有各的道理。個人建議*號跟隨變量,比如(int *a)并且同時初始化,以免忘記,造成懸空指針。
回復

使用道具 舉報

17#
ID:351421 發表于 2020-1-4 10:42 | 只看該作者
254zhang 發表于 2019-12-30 11:59
還有一個問題  
int *a = &b;   (這是把b的地址賦給指針變量a)

首先,3中實現的是一樣的,但是第三種不太嚴謹,在定義的同時沒有初始化,會出現野指針。他們都是實現了把b的地址放入a中,也就是指針a指向b的地址。第二個問題,第一個是定義一個指針同時初始化,第二個是把b的地址的數值放入a指向的空間中,不是b的值。
回復

使用道具 舉報

18#
ID:680945 發表于 2020-1-4 12:17 | 只看該作者
一樣的,看個人習慣,以及行業習慣
回復

使用道具 舉報

19#
ID:481073 發表于 2020-1-4 15:47 | 只看該作者
指針就是指向地址的意思,在指針運算的過程中是在對地址進行操作,你明白這個就清楚了
回復

使用道具 舉報

20#
ID:681096 發表于 2020-1-4 16:27 | 只看該作者
三種寫法沒有實際上的區別,但是我個人比較喜歡第一種寫法,很多c語言的書上也是第一種寫法
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区四区在线视频 | 成人国产在线视频 | 亚洲欧美在线观看 | 国产精品视频一二三区 | 国产一区二区毛片 | 欧美日韩久久久 | 亚洲三区在线 | 亚洲一区二区av | a久久| 国产激情免费视频 | 久久伊人精品一区二区三区 | 成人夜晚看av| 国产综合精品一区二区三区 | 91亚洲精品在线观看 | 91久久国产综合久久 | 日日操日日干 | 狠狠伊人| 成人激情视频免费观看 | 久久久久国产成人精品亚洲午夜 | av网站免费看| 男人天堂网站 | 成人在线视频免费观看 | 欧美激情一区二区 | 桃花av在线| 91九色在线观看 | 日韩91 | 成人免费精品 | 一区二区三区电影网 | xxx国产精品视频 | 日韩有码在线播放 | 天天操夜夜操 | avav在线看 | 一级毛片免费 | 99爱在线免费观看 | 国产精品久久久久久久久免费 | 亚洲欧洲在线看 | 亚洲一区自拍 | 中文字幕在线观看av | 日韩精品久久久 | 91大片| 欧美精品一区二区蜜桃 |