国产探花免费观看_亚洲丰满少妇自慰呻吟_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;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 于都县| 介休市| 富宁县| 桃江县| 普安县| 津南区| 璧山县| 奎屯市| 嘉鱼县| 宁南县| 无极县| 南雄市| 界首市| 磐石市| 喀喇沁旗| 阳春市| 保靖县| 郁南县| 双辽市| 绥德县| 洛宁县| 宁强县| 石景山区| 张家界市| 子长县| 达拉特旗| 丰台区| 凤冈县| 尉犁县| 恩施市| 遂溪县| 祁东县| 高陵县| 香格里拉县| 临泉县| 汉阴县| 西青区| 稷山县| 广昌县| 通化市| 白城市|