指針之間也不能隨意賦值。
看個比較典型的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 個元素也對不上,不能賦值。
所以答案就是,除了第三個,其他的都不能賦值。
審核編輯:劉清
-
C語言
+關注
關注
180文章
7630瀏覽量
140331
原文標題:指針之間不要隨意賦值
文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
DSP中怎么給地址指針賦值
SBUF怎么賦值呢?
dd的值沒有賦值給指針
【設計技巧】指針的使用注意事項:空指針、指針賦值、void *指針
為什么代碼會產生來自不兼容指針類型的賦值
c語言函數指針定義,指針函數和函數指針的區別
深入了解void指針背后的機理
求求你,不要再糾結指針了(2)——函數指針

評論