指標 陣列 函式2

2021-08-15 02:49:26 字數 2360 閱讀 9608

1、

指標常量和常量指標的區別

const *p是常量指標。指標所指向的位址裡的內容不能被改變。但指標可以指向別的位址。(我們可以改變它指向的位址,但是不能改變指向的位址的內容)

* const p是指標常量。可以理解為指標是常量。指標只能賦值一次(定義時除外),不能再修改。(我們可以改變它指向的位址的內容,但不能改變它指向的位址) 2、

null和0的區別

雖然可以比較null和0的大小,而且null的大小和0的大小一樣,但是null和0並不一樣。

3、viod 指標

void指標,是沒有指定資料型別的指標。void指標可以容納任何型別的指標,並且可以轉換到任何型別。void指標是一種特別的指標

void *vp

說它特別是因為它沒有型別,或者說這個型別不能判斷出指向物件的長度。

任何指標都可以賦值給viod指標。viod只獲得變數(物件)的位址,而不是大小。

void指標賦值給其他型別的指標時都要進行轉換,轉換型別也就是獲得指向變數/物件大小。

void指標不能復引用,因為void指標只知道,指向變數/物件的起始位址,而不知道指向變數(物件)的大小(佔幾個位元組)所以無法正確引用。

4、陣列指標和指標陣列

指標陣列就是乙個陣列,不過陣列裡面的元素都是指標。

陣列指標就是指向陣列的指標。陣列指標,指的是陣列名的指標,即陣列首元素位址的指標。即是指向陣列的指標。陣列指標存放的是指向的陣列的首元素的位址。

5、sizeof和strlen的區別

sizeof是c語言的乙個運算子,求的是所所佔空間的大小,比如char為1個位元組。

strlen是乙個函式,求的是字串的長度。

char c[ ] = 「abcd」;

sizeof(c)得出的是5;strlen(c)得出的是4。因為sizeof會計算字串後面的\0,而strlen(c)是求字串的長度,遇到\0結束。但若c[ ]=; 則strlen(c)輸出不確定的值,因為d後面沒有\0,所以繼續計算。

6、指標函式和函式指標的區別

指標函式是函式,它的返回值是指標。如int*fun(int a) 這個函式的返回值是型別為int*的指標。也就是說返回的是乙個位址

函式指標是指向函式的指標,int (*fun)( a)這個指標定義為乙個指向乙個返回值為int,有1個型別為char的引數。

7、typedef

可以定義一種型別的別名,而不只是簡單的巨集替換。可以用作同時宣告指標型的多個物件。比如:

typedef char* pchar; // 一般用大寫

pchar pa, pb; // 可行,同時宣告了兩個指向字元變數的指標

雖然:char *pa, *pb; 也可行,但相對來說沒有用typedef的形式直觀,尤其在需要大量指標的地方,typedef的方式更省事。

8、int a[ 3][ 4];

%p, a是列印首行的位址,單位為行,a+1是下一行的位址,即a[1][0]的位址。

%p, &a是列印該陣列的位址,單位為陣列,&a+1是列印陣列最後乙個元素的下乙個位址。

%p,a[0]是列印首元素的位址,單位為元素,a[0]+1是列印下一元素的位址,即a[0][1]的位址。

%p,*a (與a[0])相同,是列印首元素的位址,單位為元素,*(a+1)是列印下一元素的位址,即a[0][1]的位址。

9、右左法則

int *a[10];

首先我們確定a是乙個陣列,向右看,看到「*」,證明這個陣列裡的每乙個元素存放的都是位址,即指標陣列,那麼接下來便要確認位址的型別。再向右看,看到「;」,這時返回,再向左看,看到「int」,證明位址是整型的。即整型指標陣列。

int (*a)[10];

首先我們找到變數a,向右看,看到「)」,返回向左看,看到「*」,便確定a是乙個指標變數,再向右看,看到「【」,說明指標變數裡儲存的位址是陣列的位址,即陣列指標變數,再向右看,看到「int」,說明這個陣列指標變數裡的每乙個元素都是整型的,即整型陣列指標變數。

int (*a)(int);

首先我們確定a是乙個指標變數,向右看,看到「(」,說明這個指標變數裡儲存的是函式,即函式指標變數;而這個函式的形參是整型的,返回值也是整型。

如果確定a是乙個指標變數,並且向右看看到「(」,即指標變數指向函式,即函式指標變數。

int (*a[10])(int);

首先我們確定a是乙個指標陣列,而這個指標指向函式,即為函式指標陣列,並且函式的形參為整型,返回值也是整型。

10、指標的型別轉換

如果有乙個指標p,我們需要把它的型別和所指向的型別改為tyep *type, 那麼語法格式是:(type *)p;

這樣強制型別轉換的結果是乙個新指標,該新指標的型別是type *,它指向的型別是type,它指向的位址就是原指標指向的位址。

而原來的指標p 的一切屬性都沒有被修改。

函式 陣列 指標(2)

內容與task 2 提高部分相關 指標能夠有效的處理陣列!是否學好c語言的重要標準就是指標與檔案 先直接給題目 理解並寫出結果 1 include int main char cp char cpp cp printf s n cpp 列印句1 printf s n cpp 3 列印句2 print...

指標陣列 陣列指標 函式指標 函式指標陣列

陣列指標 指向陣列的指標,是乙個指標,其指向的型別是陣列 指標陣列 元素為指標的陣列,是乙個陣列,其中的元素為指標。例如 int a 5 這個是陣列指標。int a 5 這個是指標陣列。定義函式指標型別 int max int,int typedef int fun ptr int,int 申明變數...

指標陣列,陣列指標,指標函式,函式指標

int p 4 指標陣列。是個有4個元素的陣列,每個元素的是指向整型的指標。int p 4 陣列指標。它是乙個指標,指向有4個整型元素的陣列。int func void 指標函式。無參函式,返回整型指標。int func void 表示函式指標,可以指向無參,且返回值為整型指標的函式。右左規則 因為...