已采納回答 / 咸魚干兒
因為在RAM內存中最小的存儲單位是8bit也就是1Byte,但是地址總線是32位,所以可以尋址的空間是2^32=4G個最小存儲單位,也就是4GB。編號的數字大小不代表內存最小存儲單位的大小呀。
2016-03-09
最贊回答 / 慕后端9788028
p[4]=101代表從初始位置(a的地址就始)以四個字節為一步,向前走4步,到達某個位置,然后對這個位置進行初始化賦值,即把101賦給這個地址所代表的內存空間。p[4],*p=101,p[4]代表從初始位置(a的地址就始)以四個字節為一步,向前走4步,到達某個位置。*p=101,代表此時指針指向的地址(即走了四步后所在位置)并對這個地址所在的內存空間進行初始化,賦值101。p+=3于p=p+3等同,加的是步數,原理跟p[3]一樣
2016-03-09
已采納回答 / qq_朕有一車刁民_0
==為什么不會被覆蓋,不過你要想避免被覆蓋就把數組分為全局和局部的,兩個都是全局的肯定會被后者覆蓋,前者全局后者局部的,在局部使用的數組不會被覆蓋。
2016-02-15
已采納回答 / lifeforme
對于這個問題 請教了一些大神 ? ?給我的答案是:在你調試的時候,系統運行在保護模式,內存不會溢出。你所看到的地址其實是系統映射出來的,實際上不存在。你以為你在訪問某地址 其實并沒有真正訪問具體的內存地址
2016-02-04
最贊回答 / 熱噴Redpen
我把代碼稍微改一下: int* a;這里的a就是代表指針變量(int*),而不是一個整型變量(int)所以a存放的是地址,*a才是地址中存放的值(這里的*與第一行的*不同,這個*是取地址的意思)
2016-01-27
最贊回答 / 劉小宇0215
先回答第二個問題,注意是16進制,不是十進制,內存可能分配半個字節嗎,隨著內存越來越廉價,程序設計一般是空間換時間,每個數組是int的四個字節。第一個問題是二維數組賦值給一維數組,應該很好理解,不過我不理解你為什么將那個表達式稱為常量表達式,應該是變量表達式吧,而且這個數組[]里應該最大是11,而不是12也不會是12以上,具體細節如果不懂的話,建議你最好在命令行用gdb一步步的慢慢調試,我也是剛剛學,不過你犯的是常識錯誤。
2016-01-21