指針—學(xué)習(xí)c/c++的第一步(第五章)

字號(hào):

第五章。數(shù)組和指針的關(guān)系
    如果對(duì)聲明數(shù)組的語句不太明白的話,請(qǐng)參閱我前段時(shí)間貼出的文章<<如何理解c和c++的復(fù)雜類型聲明>>。 數(shù)組的數(shù)組名其實(shí)可以看作一個(gè)指針??聪吕?BR>    例八: 
    int array[10]={0,1,2,3,4,5,6,7,8,9},value; 
    ... 
    ... 
    value=array[0];//也可寫成:value=*array; 
    value=array[3];//也可寫成:value=*(array+3); 
    value=array[4];//也可寫成:value=*(array+4); 
    上例中,一般而言數(shù)組名array代表數(shù)組本身,類型是int [10],但如果把a(bǔ)rray看做指針的話,它指向數(shù)組的第0個(gè)單元,類型是int *,所指向的類型是數(shù)組單元的類型即int。因此*array等于0就一點(diǎn)也不奇怪了。同理,array+3是一個(gè)指向數(shù)組第3個(gè)單元的指針,所以*(array+3)等于3。其它依此類推。
    例九: 
    char *str[3]={ 
    "Hello,this is a sample!", 
    "Hi,good morning.", 
    "Hello world" 
    }; 
    char s[80]; 
    strcpy(s,str[0]);//也可寫成strcpy(s,*str); 
    strcpy(s,str[1]);//也可寫成strcpy(s,*(str+1)); 
    strcpy(s,str[2]);//也可寫成strcpy(s,*(str+2)); 
    上例中,str是一個(gè)三單元的數(shù)組,該數(shù)組的每個(gè)單元都是一個(gè)指針,這些指針各指向一個(gè)字符串。把指針數(shù)組名str當(dāng)作一個(gè)指針的話,它指向數(shù)組的第0號(hào)單元,它的類型是char**,它指向的類型是char *。
    *str也是一個(gè)指針,它的類型是char*,它所指向的類型是char,它指向的地址是字符串"Hello,this isa sample!"的第一個(gè)字符的地址,即'H'的地址。