學c花絮:以前學c的時候,感覺指標這玩意很難控制,由於一開始就對指標心懷恐懼,所以後來沒學好自在情理之中。可如今不一樣,想做c開發,這是吃飯的傢伙,不得不認真。當乙個人要靠別人或者某種技能來生存的話,也許是很可悲的,這個目前無法改變。
先上點概念性的
*運算子:是間接引用或間接定址的運算子。當它作用於指標時,將[b]訪問指標所指向的物件[/b]
下面用簡單的例子來說明是如何宣告指標和如何使用運算子[b] [color=red]*[/color] [/b]和[b] [color=red]&[/color] [/b]:
int x = 1, y = 2, z = 3, c[3] = ; /* c[0]的儲存位址為0x0022ff30 */
int *p; /*宣告指標p,它指向乙個int型的變數 */
p = &x; /* 指標p指向x的儲存位址,訪問x物件,*p=1 */
p = &z; /* 指標p又指向z的儲存位址,訪問z物件,*p=3 */
y = *p; /* 將指標p最後所訪問的物件z的值賦給y,*p=3,y=3 */
*p = 0; /* 將指標p最後所訪問的物件z的值置0,*p=0,z=0 */
p = &c[0]; /* 指標p指向c[0]的儲存位址,*p=20 */
printf("x=%d,y=%d,z=%d,c[0]=%d,*p=%d", x, y, z, c[0], *p);
/* result:x=1,y=3,z=0,c[0]=20,*p=20 */
int c[3] = ; /* c[0]的儲存位址為0x0022ff30 */
int *ip;
ip = &c[0]; /*指標ip指向c[0]的儲存位址*/
printf("ip=0x%x\n", ip); /*取位址*/
printf("&ip[0]=0x%x ,&c[0]=0x%x\n", &ip[0], &c[0]); /*取位址*/
printf("&ip[1]=0x%x ,&c[0]=0x%x\n", &ip[1], &c[1]); /*取位址*/
printf("&ip[2]=0x%x ,&c[0]=0x%x\n", &ip[2], &c[2]); /*取位址*/
printf("*ip=%d\n", *ip); /*取物件的值*/
printf("&p=0x%x\n", &p);
/* result:
p=0x22ff30
&p[0]=0x22ff30 ,&c[0]=0x22ff30
&p[1]=0x22ff34 ,&c[0]=0x22ff34
&p[2]=0x22ff38 ,&c[0]=0x22ff38
*p=20
&p=0x22ff2c
*/
C指標初識
指標是乙個變數,其值為另乙個變數的位址,即,記憶體位置的直接位址。就像其他變數或常量一樣,您必須在使用指標儲存其他變數位址之前,對其進行宣告。指標變數宣告的一般形式為 type var name 在這裡,type是指標的基型別,它必須是乙個有效的 c 資料型別,var name是指標變數的名稱。用來...
C 初識指標
定義乙個指標指向乙個變數的位址 type p var int i int p i 通過 p讀寫i的值 p 10 int a p 用乙個指標指向另乙個指標的位址,不管幾級指標都是指標.type q p char p abc char q p 讀取二級指標的值 printf s n q 等價於 prin...
初識C指標
什麼是指標?type var name int a 乙個整型的指標 double b 乙個 double 型的指標 float c 乙個浮點型的指標 char ch 乙個字元型的指標 所有實際資料型別,不管是整型 浮點型 字元型,還是其他的資料型別,對應指標的值的型別都是一樣的,都是乙個代表記憶體位...