指針相關總結1
指針是數組的疊代器(指針就是疊代器).
0.字元串數組:
char a[3][25]= {"XUANXIU YUWEN ", "XUANXIU YUWEN", "FEIXUANXIU TIYU"};就行了 定義成二維數組存儲時可以簡單看作一排一個字元串數組,
char* a[10] = {"XUANXIU", "YUWEN", "XUANXIU", "SHUXUE", "FEIXUANXIU", "TIYU"};這樣是定義了一個指針數組 指針元素分别指向每一個對應的字元串存儲的首位址
1.C語言指針為什麼可以指向字元串常量,卻不可以指向整型常量
char * c="hello";//等價于char * c; c="hello",這裡比較特殊.字元串直接使用代表字元串首位址。(注意這裡僅是對c,c++下還是會出錯的)
隻可以用指針取字元串常量的位址,該類被認為是左值,而其他的字面值常量(literal constant)比如整數,則被認為是右值,不允許取位址。
而對于int類型,你可以這樣改就能用指針了:
int a=2;
int*p=&a;
2.字元串的引用方式:
用數組名和輸出格式%s可以輸出整個字元串.比如:
char str[] = "I love China";
printf("%s\n", str);//輸出完整字元串
printf("%s\n", str + 2);//隻輸出love China,規定了起點。
cout << *(str+2); //這裡隻輸出"l"
類中也有這樣的情況
class A
{
public:
A(int i, char *p) :ival(i), ptr(p) {};
int ival;
char *ptr;
};
void main()
{
A a(9, "hello");
cout << a.ival << a.ptr << endl;//這裡a.ptr輸出hello,即字元指針能直接輸出它所指向的字元串。
system("pause");
}
3.排除編譯器限制嚴謹程度,int和指針變量類型是可以互相轉換的。但是最好别這麼做,在這裡這麼做隻是為了了解指針的實質(位址)。