本節主要學習了陣列和指標
1.首先介紹陣列的概念
陣列:型別相同的數值集合
一般格式:int arr[n] = {};如例一。
1.2.如何使用:首先用 for 迴圈初始化陣列
1.3數 組 名 的 含 義 : &arr+1; sizeof(arr); sizeof(arr[0]);
分別為 :陣列首位址加一;求陣列記憶體大小;求陣列首元素大小
1.4 arr 和&arr 的區別和聯絡元素大小:
arr是陣列的首位址,&arr是陣列的位址,它們雖然位址是一樣的,但表示的意思是不同的。
arr+1表示向後偏移乙個元素大小,(&arr)+1表示向後偏移乙個陣列的大小。
1.5 野指標:
野指標就是沒有初始化或者賦值的指標,不能進行解除引用操作()
譬如int p;
*p=10;//編譯一般只會有警告,但是執行到這裡的時候會出錯
但是指標p本身的值是可以使用的,譬如可以
printf("%p",p);
但是printf("%d",*p);就是錯的
int a;
int *p=&a;
*p=10;//這是合法的
int *p=new int;
*p=10;//合法的
delete p;
1.6區別sizeof()和strlen()的意思
舉例:char str[100] = 「abcdef」;
char *str2 = 「abcdef」;
char str3 = 「abcdef」;
char str4[100] = 「abcdef\0xyz」;
char *str5 = 「abcdef\0xyz」;
char str6 = 「abcdef\0xyz」;
char str7 = 「abcdef\n\0」;
char *str8 = 「abcdef\n\0」;
printf("%d,%d\n",sizeof(str),strlen(str));//100 6
printf("%d,%d\n",sizeof(str2),strlen(str2));//4 6
printf("%d,%d\n",sizeof(str3),strlen(str3));//7 6
printf("%d,%d\n",sizeof(str4),strlen(str4));//7 6 100 9 /6
printf("%d,%d\n",sizeof(str5),strlen(str5));//4 6
printf("%d,%d\n",sizeof(str6),strlen(str6));//12 6 11 6
printf("%d,%d\n",sizeof(str7),strlen(str7));//11 8 11 7 9 7
printf("%d,%d\n",sizeof(str8),strlen(str8));//4 8 4 7
例題1.0
void fun1(int n)
;//輸入陣列
for (i = 0; i < n/2; i++)//逐個輸出
for (i = 0; i < n; i++)
printf("%5d", a[i]);
}int main()
{fun1(5);//測試2,4,6,8,10
c和指標 指標基礎知識
1 記憶體和位址 2 指標初始化 3 指標變數的內容 4 間接訪問操作符 5 非法指標 null指標 1 記憶體和位址 指標是儲存的位址,比如0x0,0x1 0x2 可以這麼理解 指標可以狹義理解為記憶體位址,是存放記憶體位址的變數。網上或者書上,總是一段很多字數去表示指標說什麼,剛開始學習時候,看...
指標基礎知識
那麼編譯器就在記憶體中開闢1個整型單元存放變數a,我們假設這個整型單元在記憶體中的位址是 0x1000 那麼記憶體0x1000單元中存放了資料10,每次我們訪問a的時候,實際上都是訪問的0x1000單元中的10.現在定義 int p p a 當編譯器遇到語句int p時,它也會在記憶體中給指標變數p...
指標基礎知識
指標的基礎知識 一 空指標的定義方法 int p1 nullptr int p2 0 include int p3 null int c 0 int p4 c 此種方法是錯誤的,不能將int型變數直接賦值給指標,即使其值是0也不行這三種方法定義的空指標是等價的,只是第三種需要包含標頭檔案cstdli...