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