国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C語言提高班學習筆記 lesson5 變量、指針

2019-11-08 02:35:05
字體:
來源:轉載
供稿:網友

變量

存儲空間的別名,訪問這塊空間  比指針更安全

使用指針也可以訪問存儲空間 在變量名無法使用的場合 

局部參數傳遞  動態分配內存

指針也是一個變量 有自己的存儲空間

指針也會有指針 -> 指針的本質:保存內存地址的變量   使用指針都是間接訪問: 指針訪問的內存地址,通過內存地址間接訪問空間

使用指針賦值和變量賦值的區別

{	int n = 10;     //直接訪問 	int *pn = &n;   //間接訪問	n = 100;	*pn = 1000;	return 0;}轉到反匯編
012616A5  mov         dWord ptr [ebp-4],eax  	int n = 10;     //直接訪問 012616A8  mov         dword ptr [n],0Ah  	int *pn = &n;   //間接訪問012616AF  lea         eax,[n]  012616B2  mov         dword ptr [pn],eax  	n = 100;012616B5  mov         dword ptr [n],64h  //一步到位,直接賦值	*pn = 1000;012616BC  mov         eax,dword ptr [pn]  // 先取值到eax,尋址012616BF  mov         dword ptr [eax],3E8h  //再進行賦值	return 0;012616C5  xor         eax,eax  

使用變量的效率比使用指針的效率高

使用指針的場合

在函數中改變變量的值

void foo(int *n){	*n = 100;}

 

指針和const結合

int main(){		 //const 在*左邊  指針指向的數據 為常量	 //const 在*右邊  指針本身       為常量	const int *p; 	int const *p1;	int *const p2;	const int *const p3;	const int const *const p4;	int n = 10;	int n2 = 100;	p = &n2;  //指針本身能改//	*p = 100; //指向的數據不能改	//	p2 = &n2;  //指針本身不能改	*p2 = 1000; //指向的數據能改	return 0;} 

指針和數組

//數組:相同變量名的一種集合 屬于直接訪問int main(){	int array[10] = { 1,2,3,4,5 };//編譯器分配一段內存空間  	int *parray = array;  //array-> 數組的首地址 array[0](同時也是數組的地址) 		//大部分情況下 數組名=常量指針	//使用指針訪問數組	PRintf("%d/r/n", *parray);	printf("%d/r/n", *parray + 1);	printf("%d/r/n", *parray + 2);	printf("%d/r/n", *parray + 3);	// 以下兩種場合  	//      sizeof 運算 指針得到的是指針的大小 數組得到的是數組的大小	//      做&運算		int *paddrarray = &array; //加&代表取當前數組地址	printf("%d/r/n", parray+1,paddrarray+1); 	printf("%d/r/n", array + 1, &array + 1);//運算的規則不同	// array+sizeof(*array)	// *array+sizeof(*&array)	return 0;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 明星| 平武县| 霍山县| 嘉荫县| 双城市| 鄂托克旗| 顺平县| 昭平县| 琼海市| 博白县| 临沧市| 武鸣县| 隆昌县| 怀来县| 仙桃市| 柳河县| 垣曲县| 昭觉县| 莆田市| 麻阳| 佛冈县| 阳曲县| 罗定市| 浏阳市| 沧源| 姜堰市| 峨山| 鸡西市| 洱源县| 白玉县| 柯坪县| 罗山县| 广州市| 通州区| 会昌县| 县级市| 定襄县| 舟山市| 菏泽市| 淮阳县| 南汇区|