Re: [問題] ++運算符號實際運作的時機?
※ 引述《giveatry (new life)》之銘言:
: ※ 引述《giveatry (new life)》之銘言:
: : #include <stdio.h>
: : int main(){
: : int* c = 1;
: : printf("c++ is %d\n", c++);
: : printf("c is %d\n", c);
: : return 0;
: : }
: : 印出來的結果
: : c++ is 1
: : c is 5
: : 為什麼會這樣呢ꄊ: : 謝謝
: 我改成這樣的時候
: #include <stdio.h>
: #include <stdlib.h>
: int main(){
: int* c = (int*)malloc(sizeof(int)*1);
: *c = 1;
: printf("c++ is %d\n", c++);
: printf("c is %d\n", c);
: return 0;
: }
: 印出來的結果是
: c++ is 159821832
: c is 159821836
: 改成這樣的話,好像就是印記憶體位置了
: 愈搞愈迷糊了@@
雖然我不常寫c不過看好像沒人要理你這個問題
我就來點你一下好了,先說~我是看你的實驗說故事的
你第一個宣告指標c
int* c=1;
是把指標c指到1這個位置了
而
printf("c++ is %d\n", c++);
印出了c這個指標位置1 再移到下一個位置
不過你宣告的是int這個有4個byte,所以跳4,因此你看到的+4是這邊來的
第二個int* c = (int*)malloc(sizeof(int)*1);
這個是你叫電腦幫你選出一個有一個int大小的位置,把c指向那邊
電腦給你159821832這個位置,接下來你又作了一樣的事情
所以呢,從頭到尾差別只有
手動選號(1) 跟
電腦選號(159821832) 的差別而已
不過手動選號是很危險的
因為你不知道這號碼有沒有人在使用,除非你很確定
否則不要作這樣的動作
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 58.115.26.253
→
06/28 02:15, , 1F
06/28 02:15, 1F
→
06/28 09:06, , 2F
06/28 09:06, 2F
→
06/28 09:06, , 3F
06/28 09:06, 3F
推
06/28 10:05, , 4F
06/28 10:05, 4F
推
06/28 10:18, , 5F
06/28 10:18, 5F
→
06/28 10:18, , 6F
06/28 10:18, 6F
推
06/28 14:46, , 7F
06/28 14:46, 7F
→
06/28 15:09, , 8F
06/28 15:09, 8F
→
06/28 15:09, , 9F
06/28 15:09, 9F
推
06/28 15:22, , 10F
06/28 15:22, 10F
→
06/28 15:23, , 11F
06/28 15:23, 11F
→
06/28 15:25, , 12F
06/28 15:25, 12F
→
06/28 15:25, , 13F
06/28 15:25, 13F
→
06/28 15:27, , 14F
06/28 15:27, 14F
推
06/28 17:13, , 15F
06/28 17:13, 15F
→
06/28 20:43, , 16F
06/28 20:43, 16F
→
06/28 20:44, , 17F
06/28 20:44, 17F
→
06/28 20:44, , 18F
06/28 20:44, 18F
→
06/28 20:44, , 19F
06/28 20:44, 19F
→
06/28 20:54, , 20F
06/28 20:54, 20F
→
06/28 20:54, , 21F
06/28 20:54, 21F
推
06/28 23:39, , 22F
06/28 23:39, 22F
→
06/28 23:39, , 23F
06/28 23:39, 23F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):