天天看點

指針相關總結1

指針相關總結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和指針變量類型是可以互相轉換的。但是最好别這麼做,在這裡這麼做隻是為了了解指針的實質(位址)。 

繼續閱讀