4、0];*(a+1)等價于a[1]……,同樣,a等價于&a[0];a+1等價于&a[1]……例10.2有以下程序:main(){inta[5],i;for(i=0;i<5;i++)scanf(“%d”,a+i);for(i=0;i<5;i++)printf(“%d”,*(a+i));}(3)用帶下標的指針變量引用一維數(shù)組元素,若有以下定義語句:int*p,a[5];p=a;我們可以使用p[0]來表示p指針指向的內(nèi)存單元,使用p[1]表示p指針指向的內(nèi)存單元的下一個內(nèi)存單元。也就是說,可以使用p[0]來表示a[0];p[1]來表示a[1]……因此,對數(shù)組元素a[i]可
5、以有4種等價的引用方法:①a[i];②p[i];③*(a+i)④*(p+i)。對應地,對a[i]地址的引用,也有4種等價的引用方法:①&a[i];②&p[i];③a+i④p+i。從上面可以看出,當指針p指向數(shù)組a的首地址后,a和p具有相同的引用方法。但是,a和p有著本質(zhì)的區(qū)別:a是數(shù)組而p是指針;a不能重新賦值而p可以隨意的重新賦值。例10.3有以下程序:main(){inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2;printf(“%d”,*p+*q);}程序運行的輸出結(jié)果是_______。16B)10C)8D)
6、6答案:B例10.4有以下程序:main(){inti,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);printf(“%d”,s);}程序執(zhí)行后的輸出結(jié)果是_______。45B)20C)25D)36答案:C10.2二維數(shù)組和指針二維數(shù)組的首地址和數(shù)組元素的地址如有以下語句:inta[2][3],*p,i;數(shù)組a如下所示:a[0]a[0][0]a[0][1]a[0][2]a[1]a[1][0]a[1][1]a[1][2]任何一個二維數(shù)組由若干個一維數(shù)組組成實際上,二維數(shù)組a由兩個元素組成,分別是a
7、[0]和a[1]。而a[0]和a[1]又分別是兩個一維數(shù),如上圖所示。a[0]和a[1]可以視為這兩個一維數(shù)組的數(shù)組名,它們分別由3個整型元素組成。其中,a[0]由以下三個元素組成:a[0][0]a[0][1]a[0][2]a[1]由以下三個元素組成:a[1][0]a[1][1]a[1][2]通過前面學習,我們已經(jīng)知道一維數(shù)組名是一個地址常量,其值為數(shù)組第一個元素的地址值,此地址的基類型就是數(shù)組元素的類型。在以上二維數(shù)組中,a[0]和a[1]都是一維數(shù)組名,它是一個不可變的地址常量,其值代表每行的首地址。因此,a[0]代表了a[0][0]的地址,a[1]代表了a[
8、1][0]