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。注意,行中可能出現連續的空格。輸入格式 輸入在一行中給出一行文字,以 結束,結尾的句號不能計算在最後乙...