9 指標與字串2

2021-07-31 02:32:02 字數 1803 閱讀 9335

void swap(int *pa, int *pb)

陣列變數是特殊的指標。

但是陣列的單元表達的是變數,需用&取位址

a == &a[0]

運算子可以對陣列做,也可以對指標做:

*運算子可以對指標做,也可以對陣列做:

陣列變數是const的指標,所以不能被賦值

指標是const:

所指是const:

int i;

const

int* p1 = &i; //變數不能通過指標修改

intconst* p2 = &i; //變數不能通過指標修改

int *const p3 = &i; //指標不能被修改

const int a = ;

因為把陣列傳入函式時傳遞的是位址,所以函式內部可以修改陣列的值。為了保護陣列不被函式破壞,可以設定引數為const

null是個預先定義的符號,表示0位址

void*表示不知道指向什麼東西的指標,計算時與char*相同

指標也可以轉換型別:int*p = &i; void *q = (void*)p;

用指標做什麼?

c99可以用變數做陣列定義的大小

malloc大小以位元組為單位,返回型別為void*,free只能還申請來的空間的首位址

includeint *a = (int*)malloc(n*sizeof(int));

free(a);

int getchar(void);

鍵盤和螢幕中間有乙個shell,使用者輸入是給shell填緩衝區,getchar和scanf只是在緩衝區讀東西。

char **a;

char a[10];

char *a;

程式引數:

int main(int argc, char

const *argv)

argv[0]是命令本身

size_t strlen(const

char *s);

int mylen(const

char *s)

return idx;

}

int

strcmp(const

char* s1, const

char *s2);

int mycmp(const

char* s1, const

char* s2)

return s1[idx] - s2[idx];

}int mycmp(const

char* s1, const

char* s2)

return *s1 - *s2;

}

char *strcpy(char *restrict dst, const

char *restrict src);

char* mycpy(char *dst, const

char* src)

char* mycpy(char *dst, const

char* src)

dst[idx] = '\0';

return dst;

}

複製乙個字串:

char *dst = (char*)malloc(strlen(src) + 1);

strcpy(dst, src);

3 25指標與字串

建立與輸出 char str 10 hellow cout str 建立乙個指向字串的指標 c 11並不建議這樣使用 char p str 10 hellow cout p str 系統會認為這是乙個指向字元常量的字串指標,這種不允許修改的 一般使用 char p str 建立乙個char型別的指向...

34 指標與字串

1 字串指標 在c語言中,可以用兩種方法訪問乙個字串 1 字元陣列 char string i love china printf s n string 說明 和前面介紹的陣列屬性一樣,string是陣列名,它代表字元陣列的首位址。2 字串指標指向字串 char 變數名 字串內容 對指向字元變數的指...

第七周 指標與字串

1 單詞長度 題目內容 你的程式要讀入一行文字,其中以空格分隔為若干個單詞,以 結束。你要輸出這行文字中每個單詞的長度。這裡的單詞與語言無關,可以包括各種符號,比如 it s 算乙個單詞,長度為4。注意,行中可能出現連續的空格。輸入格式 輸入在一行中給出一行文字,以 結束,結尾的句號不能計算在最後乙...