-
"world"在代碼段,是在程序編譯或運(yùn)行時(shí)加載進(jìn)去的,是不允許程序員再去修改的,因而阻止了scanf的操作。 程序員可以操作的是堆棧,像聲明好函數(shù)后它就被加載到堆棧中,還有malloc()操作也是對(duì)堆棧的操作,為程序分配內(nèi)存空間。查看全部
-
x/6cb 字符數(shù)組的首地址:打印出6個(gè)連續(xù)的字符查看全部
-
而賦值操作也可以由p+=3; *p=101;變成簡(jiǎn)單的p[3]=101;查看全部
-
只要在內(nèi)存中連續(xù)分布,指針的操作p+=3和p[3]是一樣的。查看全部
-
x/10d 起始地址:以4個(gè)字節(jié)為單位往后取10個(gè)值查看全部
-
雖然從來沒用到過函數(shù)指針,不過說白了就是這樣: int quadrate(int a); // main中 int a=3; int (*p)(int a); p = &quadrate; int s = (*p) (a); //最后就相當(dāng)于s(a)查看全部
-
同一個(gè)函數(shù)可以被多次調(diào)用,但內(nèi)部的靜態(tài)變量是始終不變的查看全部
-
全局變量int global;和常量const int i;在數(shù)據(jù)段查看全部
-
`gcc -g main2.c -o main2.out` 加了`-g`參數(shù)生成的可執(zhí)行文件才能被gdb調(diào)試 但依然不能刪除源代碼 然后用gdb命令讀取可執(zhí)行文件:`gdb ./main2.out` l(list的縮寫)列出部分源碼,再按enter,即再執(zhí)行l(wèi),反復(fù)操作,直到能夠完整顯示全部源碼 start:開始調(diào)試 p:打印,此時(shí)`p a`打印出的a值為0,說明此時(shí)`int a=5;`還未生效,需要跳到下一行 n:執(zhí)行一行,完成后跳到下一行,此時(shí)`p a`才打印出5 s:執(zhí)行一行,如果此行代碼中有函數(shù)調(diào)用,則進(jìn)入該函數(shù),然后不停`n`可以一行行地執(zhí)行 bt:查看函數(shù)堆棧,此時(shí),#0是change,#1是main f:切換堆棧,此時(shí)`f 1`跳回main函數(shù),這里還沒有執(zhí)行change q:退出調(diào)試查看全部
-
同類型變量會(huì)放一起,好處:方便地址對(duì)齊查看全部
-
指針變量char *str2 = "hello",用scanf 向str2中輸入字符串出錯(cuò),其實(shí)也可以這么理解,指針str2只是指向一個(gè)地址,從這個(gè)地址開始寫入"hello",沒有指定內(nèi)存長度,沒有空間去容納字符串。內(nèi)存溢出!這個(gè)與char str[] = "hello"不同,str已經(jīng)有了6個(gè)字節(jié)的內(nèi)存空間,查看全部
-
如果指針p已指向數(shù)組中的一個(gè)元素,則p+1(p++)指向同一數(shù)組中的下一個(gè)元素,而不是將p的值簡(jiǎn)單的加1。 p += 3 表示將指針向下移動(dòng)3個(gè)元素。查看全部
-
靜態(tài)變量 static關(guān)鍵字。函數(shù)調(diào)用結(jié)束后,靜態(tài)變量的值不消失。對(duì)一個(gè)C文件里的全局變量和函數(shù)加入static的申明 可以防止被其他C文件誤調(diào)用,即限定作用域只是當(dāng)前文件,其他文件中即使有同名變量和函數(shù)也不影響。查看全部
-
來一個(gè)查看全部
-
32位系統(tǒng)指針變量占4個(gè)字節(jié),64位系統(tǒng),要占8個(gè)字節(jié),這還是第一次聽,漲姿勢(shì)了!查看全部
舉報(bào)
0/150
提交
取消