-
用x命令可以每次輸出多個, 格式:x/個數(shù)?d?地址
d十進制
查看全部 -
內(nèi)存地址從大到小依次為系統(tǒng)內(nèi)核,棧,堆,數(shù)據(jù)段,代碼段。
查看全部 -
32?bit?指針 4個字節(jié)
64?bit?指針 8個字節(jié)
查看全部 -
變量名只是個代號
變量的本質(zhì)就是內(nèi)存
指針保存內(nèi)存地址
查看全部 -
32位:內(nèi)存編號只能編到32個二進制位
操作系統(tǒng):管理內(nèi)存,編號,規(guī)劃。
用戶內(nèi)存隔離:避免系統(tǒng)內(nèi)存故障
查看全部 -
單位:字節(jié)(Byte)
1 Byte=8 bit
0~9?A?BCD?E?F 10 (0*表示16進制)
計算用二進制?顯示用十進制?編程用十六進制
查看全部 -
f 1
f 2
切換函數(shù)棧
查看全部 -
#include<stdio.h>
int main(void)
{
??? char str[] = "hello";
??? char *str2 = "world";
??? char str3[100];
??? printf("input the value \n");
??? scanf("%s", str3);
??? printf("str is %s\n", str);
??? printf("str2 is %s\n", str2);
??? printf("str3 is %s\n", str3);
} ??查看全部 -
1.論視頻中出現(xiàn)的*p=&a和p=&a
請注意第一次時 int *p 是指針聲明 =&a 這是賦值。第二次的 p=&a 也是賦值 但是p前面沒有加* 因為已經(jīng)聲明過了 除了聲明地方之外的*p 意義為:取p這個指針變量所指向的地址中的值
2.p++:指針偏移,運行效率高
3.p+3與*p+3區(qū)別:前者是把現(xiàn)指針向下移動三格,后者是對指針?biāo)傅刂返淖兞窟M行操作(數(shù)學(xué)運算加3)
(Plus:p+=3與p=p+3等同,加的是步數(shù),原理跟p[3]一樣)
4.為什么p+4;*p=101 與p[4]=101等價???p[4]=101代表從初始位置(a的地址就始)以四個字節(jié)為一步,向前走4步,到達某個位置,然后對這個位置進行初始化賦值,即把101賦給這個地址所代表的內(nèi)存空間。p[4]代表從初始位置(a的地址就始)以四個字節(jié)為一步,向前走4步,到達某個位置。*p=101,代表此時指針指向的地址(即走了四步后所在位置)并對這個地址所在的內(nèi)存空間進行初始化,賦值為101。 ? ? ? ? ?
5.i為什么1? GCC的優(yōu)化,i是整形,在地址a之后。i初始0,循環(huán)一次后指針指向i,此時i+1=1(i++)
6. 指針如何指向數(shù)組?e.g: ①int a[3]={1,2,3};? int(*p)[3]=&a
②int *pa=array; pa[0]=1; pa[2]=2; pa[2]=3;
查看全部 -
在程序中使用了一個未被聲明的變量所指向的內(nèi)存空間,則會生成一個隨機的值(代碼幽靈-不可控)
程序中聲明的同一種變量在內(nèi)存中連續(xù)排列
查看全部 -
在C++中,內(nèi)存分成5個區(qū),他們分別是堆、棧、自由存儲區(qū)、全局/靜態(tài)存儲區(qū)和常量存儲區(qū).
代碼段:把源代碼編譯完成為目標(biāo)文件的代碼,函數(shù)等
數(shù)據(jù)段:全局變量、常量、靜態(tài)變量等
調(diào)用的函數(shù)指針的順序就存放在棧內(nèi)存,可以理解為棧的先進后出就是函數(shù)的調(diào)用的順序
64進制內(nèi)指針?biāo)純?nèi)存均為8字節(jié),而32進制中為4字節(jié)。
查看全部 -
字節(jié) K M G T P E...
查看全部 -
32位操作系統(tǒng)最多可以管理4G內(nèi)存
查看全部 -
*pa=array
array本身就是個地址,所以不用加&
array類似是指針常量
*pa類似指針變量,
*pa=&a后又有p=&a?
因為做了6次的p++的指針操作,在新的循環(huán)開始之前,要把p指向的位置重新挪回指向a的地址
查看全部 -
P[4]=101后
arr[2]=101
查看全部
舉報