在上一篇筆記裡講述裡c語言裡與儲存相關的知識,下面通過代碼再說明一下,看的就比較清楚了.
注意:下面的代碼只是在說明文法,並不是真的寫程式,寫程式要在學習完函數之後才能開始.
下周一(12.14),二,四晚上18:10 直播課堂零基礎學c語言開課,對學java,c#的同學一樣有用,歡迎感興趣的朋友到時參加
Code:
- // cstudy.cpp : 定義控制台應用程式的進入點。
- //
- #include <stdio.h>
- struct ball
- {
- int x;
- int y;
- bool haveBall;
- int ballColor;
- };
- int main(int argc, char* argv[])
- {
- printf("hello!/n");
-
- int a ; //開空間 ,佔4個位元組
- a=258 ; //258 儲存到 空間 a, 分別是 02,01,00,00
- int *p ; //開指標空間p
- p=&a; //a的地址存到p
- *p=*p+1; //或(*p)++, p指向a,相當於a++;
- printf("指標示範,通過p顯示a的值是%d/n",*p);
-
- //示範類型轉換,即不同類型空間賦值
- char c;
- int m;
- c=65;//或c='A';
- m=c; //m的空間大於c,所以沒有任何問題;
- c=(char)a;//a的空間大於c,所以要強制轉換,同時有資料截斷
- printf("c的值只能是a的最低位位元組,所以c=%d/n",c);//數字2代表的asc碼看不到,用整數顯示
-
-
- //字串和字元數組
- char str[]="This is string!";
- char str1[]={'T','h','e',32,'e','n','d'};
- printf("這個是數組:%s/n",str);
- printf("這個不是數組:%s/n",str1);
-
-
- //數組和指標,指標數組,雙重指標:
- char s1[]="This is first array!";
- char s2[]="This is second array!";
- char s3[]="This is third array!";
- char *sp[3];
- char **pp;
- sp[0]=s1;
- sp[1]=s2;
- sp[2]=s3;
- pp=sp;
- printf("測試指標數組:%s|%s|%s/n",*pp,*pp++,sp[2]);
-
-
- //指標類型轉換和指標運算
- char *cp;
- cp=(char *)p;// p是int指標,p指向a,a的值是259
- printf("cp也指向a,但*cp只能訪問一個位元組,所以*cp的值是%d/n",*cp);
- cp++;
- printf("指向下一個位元組是%d/n",*cp);
- cp++;
- printf("指向下一個位元組是%d/n",*cp);
- cp++;
- printf("指向下一個位元組是%d/n",*cp);
- // 此時p++不能使用,因為a不是數組裡的空間,只有數組才能保證連續的
-
-
- //結構體樣本
- ball ba;
- ball *pba;
- pba=&ba;
- ba.x=3;
- (*pba).y=5;
- ba.haveBall=true;
- pba->ballColor=2;
- printf("ba存了一個小球的資料,座標是(%d,%d),有球,顏色是%d/n",pba->x,pba->y,pba->ballColor);
-
- }
-