-
1.int array[5];
arrray += 2;????????//錯誤, array是常量指針(int const *array),不能被修改.
查看全部 -
C程序中的各個變量的地址與編譯后的二進制程序中變量的地址并沒有一一按照順序存儲,原因是編譯器對程序進行了一定的優化,調整了變量在棧中的存儲順序。
查看全部 -
棧的特點:先進后出
查看全部 -
32bit:4個字節
64bit:8個字節
查看全部 -
表示位置
查看全部 -
變量只是一個代號,它的本質是內存。
指針保存的是內存地址。
查看全部 -
地址總線有多少位,尋址空間就有多少位。地址總線可以存在多種狀態:32根地址總線就有2的32次方個狀態。
比如:32位指的是給內存編號只能編到32個二進制位。
查看全部 -
十六進制:
二進制:滿二進一
查看全部 -
堆內存:是區別于棧區、全局數據區和代碼區的另一個內存區域。堆允許程序在運行時動態地申請某個大小的內存空間。
棧內存:每一塊保留一塊堆內存地址,存取速度比堆快,僅次于寄存器,棧數據可以共享,但缺乏靈活性。
內存地址
指針變量的實質:是一個概念也是一個變量,整形指針、字符指針、浮點指針是指針的具體浮現,常量由編譯器決定。
指針不是地址,是地址加偏移量。
查看全部 -
?int*
?a;這里的a就是代表指針變量(int*),而不是一個整型變量(int)所以a存放的是地址,*a才是地址中存放的值(這里的*與第一行的*不同,這個*是取地址的意思)
查看全部 -
用于調試的編譯問件:gcc -g 文件名.c -o 文件名.out
調試文件:gdb 文件名.out進入調試狀態,
????????列出當前項目軟件源代碼:l/list,若顯示不完整,直接回車鍵即可繼續顯示? ? ? ? ? ? ??
????????設置斷點:break 行數? ? ? ? ? ? ??
????????單步調試:start? ? ? ? ? ? ??
????????查看變量的值: p/print 變量名? ? ? ? ? ? ??
????????進行下一步:n
????????進入某一步中查看,在進行到該步時,:s/step?
????????查看函數堆棧:bt? ? ? ? ? ? ??
????????查看函數堆棧是,查看某一堆棧:f 堆棧行
????????回車:重復執行上個步驟
查看全部 -
指針,本質是一個地址
代表指針的數據本身也有一個地址,但這個沒用
給指針賦值的時候,給的是被賦值量的地址查看全部 -
一個指針是一個地址,32位是32/8=4字節,
64位是64/8=8字節。查看全部 -
str[3]是字符串第四個字母l,將其改為\0就將字符串結束了。
str在內存存放結束后就是str3開始存放。
str只有6位空間,輸入超過六位之后,編譯器會將多余的輸入從str的地址開始,一直向內存中輸入。
c語言的字符串數組,本質是字節數組,存放了很多字節。
查看全部 -
str3[]是字符數組,所以str3可以直接作為地址,在scanf語句當中就不用&str3的表達方式了。
"hello"這個字符串有5個字符,字符串結尾還有一個\0,所以一共有6個。
x/6cb:表示向下打印6個字符,用比特為單位。
用scanf輸入str2,對其進行改動,不能完成值的更改,因為指針的內容在運行過后,會儲存在代碼段,無法被更改。
查看全部
舉報