1樓:亨瑞
我覺得*p1不能稱為變數吧,但既然p1指向變數a,那麼*p1就對應一塊能用的儲存單元,*p1就能完全代表a參與運算。
指標就是地址;
指標變數就是存放著一個地址(其實地址不過是個無符號int)的變數,然而指標變數有基型別。
*p1表示的是p1所指向的東西,就是說p1存放的是地址,從那個地址開始的一個p1的基型別規定的值。如果p1存放著變數a的地址而且p1的基型別就是a的資料型別,那麼*p1與a就是一回事,直到p1不再指向a。
如果p1在定義的時候沒有初始化,那麼就不能使用*p1,因為不知道p1指向的記憶體單元是否已被使用,可不可以訪問。
2樓:
*p1等價於變數a,對*p1操作就等價於直接對變數a操作。
但要弄明白指標變數也是一個變數,儲存的是它所指向的變數的地址,型別和所指向的變數一致,指標在一定範圍內可以理解為地址,要與變數區分開來。
指標變數指向同資料型別的一個變數,
使用指標變數之前要對其賦初值。切記
3樓:匿名使用者
p1是指標 指向變數a的地址
把指標那部分再看看吧
最好有記憶體分佈解釋,這樣更清楚一點
c語言問題,C語言問題?
include include int main max min i 0 sum i 0 i 1 i 2 i 3 i 4 i 5 i 6 for j 0 j 6 j printf 去掉一個最高分 0.6lf max printf 去掉一個最低分 0.6lf n min printf 該選手最後的得分...
c語言問題,C語言問題?
char的範圍是 128 127的 你362就溢位了嘛 是這樣的 0362 0是表示8進位制 於是362在10進位制下是242 242溢位了 128 127 於是結果變成242 128 128 14 要明白這個,首先要明白記憶體中 c 變數是什麼樣子的。整數在記憶體中是以補碼的形式存取的。c 036...
C語言問題C語言問題,C語言小問題段錯誤是什麼
str2num char p num num k return num c語言問題c語言問題 include int main int h,m scanf d d h,m printf s num h if m 0 else printf o clock printf n return 0 c語言小...