陣列和指標基礎知識

2021-08-29 10:13:40 字數 1644 閱讀 2195

本節主要學習了陣列和指標

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...