標題:
C語言指針的一點小疑問
[打印本頁]
作者:
254zhang
時間:
2019-12-30 11:17
標題:
C語言指針的一點小疑問
1.
int b=5;
int *a = &b;
2.
int b = 5;
int* a =&b;
3.
int b = 5 ,*a;
a = &b;
這三種寫法有區(qū)別嗎
是不是都是把b的地址賦給指針變量a
如果一樣的話 哪種寫法比較好
作者:
254zhang
時間:
2019-12-30 11:59
還有一個問題
int *a = &b; (這是把b的地址賦給指針變量a)
和 *a = &b; (這是把b的地址賦給指針變量a的存儲的數(shù)據(jù))
為什么含義不一樣呢?
作者:
zsm15431078
時間:
2019-12-30 15:25
發(fā)表下個人看法,針對第一個問題:
1.以上三個寫法是一樣的。個人比較傾向于第三種寫法。先定義變量,然后賦值。
2. int *a = &b;是定義一個指針變量a,同時初始化。
*a = &b是一個賦值語句,所以含義不同。
作者:
艽野塵夢
時間:
2019-12-30 15:38
三者在運行編譯時的效果是一致的,含義也大致相同
作者:
艽野塵夢
時間:
2019-12-30 15:41
三者運行編譯的效果一樣,1和2只是空格格式不同,3是先定義再賦值,最終效果是一樣的,個人喜歡第一種,定義和賦值在一起,少打一行,而且可以防止后面忘記賦值
作者:
liuyongjun000a
時間:
2019-12-30 18:09
實際上你自己全懂了。這個書寫格式,只有軟件本身認可,試了就知了。沒有文章說明中間空格就不是一個定義詞來的。如* A,或:= some;前者就是:*A,空了也是*A,等于后面的空好幾個也是一個some.
作者:
啦啦啦123321
時間:
2019-12-30 21:47
一個意思吧,第一種更好一點
作者:
jizhongbiao
時間:
2019-12-31 16:15
結果一樣,第一種和第二種完全一樣。個人決定第三種寫法比較好。
作者:
1332112623
時間:
2020-1-1 18:05
都一樣,我覺得第一種好點
作者:
w1179benp
時間:
2020-1-3 08:38
這個看個人習慣,以及代碼作用——是否有他人需要,選個通俗易懂的就OK
作者:
jaken_tony
時間:
2020-1-3 09:51
三個寫法都一樣,一般做法是第一種,特別是在一行中定義多個變量時,簡單明了,能有效區(qū)分哪些是數(shù)據(jù)變量,哪些是指針變量。至于說補充的問題,如果是單獨一行來寫,前面沒有變量類型限定符 則*a將會被編譯器認為是一個整體,表示a指針指向的int變量,也是常規(guī)的指針用法,但是你這樣寫的話,如果a指針沒有初始化,會導致程序出現(xiàn)無法預測的問題,即野指針問題。
作者:
御羽
時間:
2020-1-3 17:21
結果完全一樣。個人決定第三種寫法比較好。先定義變量,然后賦值。清晰明了
作者:
lllxy
時間:
2020-1-3 18:51
三種寫法都一樣,都是把b的地址賦給指針變量a,一般是寫作第一種
作者:
還有誰?
時間:
2020-1-3 19:29
書寫規(guī)范的代碼讓人看了賞心悅目,代碼的可讀性強。書寫規(guī)范的代碼無論對自己對別人都有好處。
作者:
Abc_zh
時間:
2020-1-3 20:24
除了第三種,我不是很贊同這樣的寫法以外,第1 、2 種寫法都可以。這是因為第三種會存在野指針的問題,雖然在你的編譯器當中會編譯通過,但是可能會導致出現(xiàn)不可預測的錯誤,畢竟你在定義*a的時候并沒有初始化給它,但是在內存中會劃分了某個區(qū)域給它,而這個區(qū)域的話,有可能存放著其他的數(shù)據(jù),可能會導致一系列不可預測的錯誤發(fā)生;蛘吣阍诙x*a時直接賦值為空,即 int * a = NULL;然后再進行下一步操作,如:a = &b;
作者:
ddddddd1wu
時間:
2020-1-3 22:06
則三種寫法是一樣的,但是至于哪種比較好,各有各的道理。個人建議*號跟隨變量,比如(int *a)并且同時初始化,以免忘記,造成懸空指針。
作者:
沒耐心
時間:
2020-1-4 10:42
254zhang 發(fā)表于 2019-12-30 11:59
還有一個問題
int *a = &b; (這是把b的地址賦給指針變量a)
首先,3中實現(xiàn)的是一樣的,但是第三種不太嚴謹,在定義的同時沒有初始化,會出現(xiàn)野指針。他們都是實現(xiàn)了把b的地址放入a中,也就是指針a指向b的地址。第二個問題,第一個是定義一個指針同時初始化,第二個是把b的地址的數(shù)值放入a指向的空間中,不是b的值。
作者:
瑜喬
時間:
2020-1-4 12:17
一樣的,看個人習慣,以及行業(yè)習慣
作者:
流星2019
時間:
2020-1-4 15:47
指針就是指向地址的意思,在指針運算的過程中是在對地址進行操作,你明白這個就清楚了
作者:
lsc124
時間:
2020-1-4 16:27
三種寫法沒有實際上的區(qū)別,但是我個人比較喜歡第一種寫法,很多c語言的書上也是第一種寫法
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1