1樓:
正確的是 a) a[i];
b) &a[i] 這個是個地址
c) p[i-1] 這個可能會越界 i=0時 p[-1]越界d) a[10] 越界
2樓:假面
選擇a) a[i]
b) &a[i] 這個是個地址
c) p[i-1] 這個可能會越界,i=0時,p[-1]越界d) a[10] 越界
陣列元素也是一種變數, 其標識方內法為容陣列名後跟一個下標。下標表示了元素在陣列中的順序號。陣列元素通常也稱為下標變數。
必須先定義陣列, 才能使用下標變數。在c語言中只能逐個地使用下標變數,而不能一次引用整個陣列。
20懸賞!!**等!若有以下定義:int a[]={1,2,3,4,5,6,7,8,9,10},*p=a; 則值為3的是( ) 20
3樓:匿名使用者
*p=a,陣列名錶
bai示地址,該
du句話的意思就是p=&a[0],p+=2表示p=&a[2];
接下zhi來我們看看* ++的優dao先級版,兩個優先順序是一樣的,屬於右權結合。*(p++)首先計算p++,由於++在後面,所以*(p++)相當於計算*p,然後p++;所以a和c相同,至於d ++*p表示++(*p),將*p的值++。我不知道樓主用的什麼編譯器。
對於我的理解,如果是printf(「%d」,*(p++))這種樣式輸出的話,a 輸出是3,b輸出是4,c輸出的是4,d輸出是4
4樓:匿名使用者
應該是a,*(p++)和*p++是一樣的,都是先算p++【為p】然後算* 符【為*p=3】最後p自加
這是* 和++的右結合性。
若有int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;則輸出結果不為5的語句
5樓:瀚漠
答案:d
對於陣列a[10],a就是該陣列的首地址,定義指標p賦值為a,那麼a和p的操作基本相同:
a[5]=p[5]=*(a+5)=*(p+5),對於d選項,p[5]是個int值,再取*就不對了。
6樓:假面
答案:d
對於陣列copya[10],a就是該陣列的首地址bai,du定義指標p賦值為a,那麼zhia和p的操作基本相同dao。a[5]=p[5]=*(a+5)=*(p+5),對於d選項,p[5]是個int值,再取*就不對了。
整數(int型別的常量)有幾種書寫形式,程式中的整數一般採用十進位制寫法。用十進位制方式寫出的一個整數就是普通數字字元組成的一個連續序列,其中不能有空格、換行或其他字元。
c語言指標問題。。 若有int a[]={0,1,2,3,4,5,6,7,8,9,0},*p=a,
7樓:匿名使用者
a: a[p-a] = a[0],即bai陣列a的第一個元素。du這裡的a沒有定義,估計應該本來是zhia吧,輸入題目的dao
時候不專小心句首自動大寫了
b: a[i]是數屬組a的第i個元素,&a[i]是該元素的地址,所以*(&a[i])是該元素的值。該項等價於a[i]
c: p[i] = a[i],即陣列a的第i個元素值d: 這個是錯誤的。*(a+i)是陣列a的第i個元素值,*(*(a+i))語法錯誤
若有定義:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},(*p)[4];p=a; ,( )對陣列a元素的引用是正確的。
8樓:處搖胼手胝足
a。a陣列的長度是3,*(p[4])和**(p+4)都會造成超出地址範圍
(**p)[2]表達不正確
*(p[2]+3) 是a[2][3];
9樓:匿名使用者
int (*p)[4];表明p是行指bai針,即p指向二維陣列中的一du行。zhi
p=a;這一句表示
daop指向a[0],也就是
版指向a陣列第0行的第0個元素權
(a[0][0])的地址。
p[2]表示p指向a陣列的第二行,即指向a[2]行,也就指向a[2][0]的地址。
p[2]+3表示行指標指向a陣列的第二行(從第0行開始),(從0開始)第3個元素,也就是a[2][3],*(p[2]+3)表示第2行,第3個元素的值。
p+4表示第四行(從0行開始),因為a陣列沒有第四行,所以是錯的。
p[4]表示第四行(從0行開始),原因同上。
*p表示a陣列第0行,第0列地址,**p表示a[0][0]的值,值不會再包含元素,所以(**p)[2]是錯的。
說明語句如下:int a[10]={1,2,3,4,5,6,7,8,9},*p=a;則數值為6的表示式是( )。
10樓:匿名使用者
d。表示式「*p = a」說明p指向a[0]的位置;
那麼 *p + 6 = a[0] + 6 = 7; a錯;
p指向a[0]的位置, 則p + 6 指向a[6]的位置,那麼 *(p + 6) = a[6] = 7; b錯;
p是一個指標,p的值本身是一個地址,p + 5顯然不可能為5; c錯;
上面說了, p指向a[0]的位置,那麼 *p = a[0] = 1;
*p += 5; 等同於 a[0] += 5; 等同於 a[0] = a[0] + 5 = 1 + 5 = 6;
顯然只有d正確;
11樓:匿名使用者
d 一開始定義了 *p=a,就是指等於a[0];它指向的是一個值!
*p+=5,可以變換一下 *p=(*p)+5 不就 a[0]+5=6.....
a = 7 ;
b 的值是 a[6]=7
c 是一個地址 &a[5] 不是值!
12樓:林聲飄揚
da> *p+6=>1+6=7
b>*(p+6)=7
c>p+5 是地址
d>*p+5=>1+5=>6
所以選d
c語言指標問題。 若有int a[]={0,1,2,3,4,5,6,7,8,9,0},*p=a,i
13樓:匿名使用者
a. a[p-a] p=a,p-a=0,這裡就是bai引du用 a[0]
b. *(&a[i]) &a[i]表示取第i+1個元素的地址zhi, *地址,
表dao
示引用地址中版的資料,這裡就是引用a[i]c. p[i] p是指標,地址,可以用權陣列元素引用方式來引用陣列元素。p[i]就是a[i]
d. *(*(a+i)) a+i是第i+1個元素的地址,*(a+i)是引用地址中的資料,是個整數,*整數,是錯誤的引用方式,會引起程式異常。
14樓:顯示卡色彩校正器
首先說,i是初始bai化了的。du
p的地址就是a的地址,zhip-a=0,沒問題&a[i]代表&a[i]的地址,加上
dao*代表存放版的數,也就是a[i],沒問題p[i]意思
權就是a[i],沒問題
a是a[0]的地址,*(a+i)指向a[i],再加*就不知道指到**去了,因為a[i]不是地址
若有以下定義和語句: int a[10]={1,2,3,4,5,6,7,8,9,10},p=a; 則不能表示a陣列元素的表示式是( ) a) *p b)
15樓:墨汁諾
不能表示a陣列元素的表示式是( b) a[10] )----因為陣列a的最大下標只能是9,即a[9],
a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],一共10個元素。
a、*p ---表示取p指標指向的單元的值,即表示取陣列a的首個元素a[0]的值。
b、a[10] ---因為陣列a一共10個元素,從0開始計數,
即a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],正好10個,沒有a[10],所以a[10]就是不能表達這個陣列元素。
c、*a ----陣列名a中儲存的是陣列的首地址,*是取單元中的值,*a就是取陣列首地址中單元中a[0]的值。
d、a[p-a] --- p指向的是陣列a,因為p中與a同資料相同都是陣列a的首地址,而p-a就等於0,因此 a[p-a]就相當於a[0]。
16樓:匿名使用者
選b)a[10] a[0]、a[1]、a[2]……a[9]分別是陣列a[10]的十個元素,故a[10]不能表示a陣列的元素。
17樓:匿名使用者
選 b a[10]
陣列是從a[0] 到 a[9] 的。。。。。。
c語言若已定義 int a 41,3,5,6,9P a則p a的值是求過程
p是指向陣列第三列的地址值 a是指向陣列第一列的地址值 所以 p a 其實就是兩個地址的差值,實際就是前兩列資料所佔的儲存空間 4 2 2 8個位元組 a 2 是在第三行開頭嘛,一行4個,兩行就是8 若已定義 int a 0,1,2,3,4,5,6,7,8,9 p a,i 其中 0 i 9,則對a陣...
若已定義inta3,b5,c2則表示式cab的值為
1 按照運算子優先順序,的優先順序大於 所以先計算b c的值,應為 回b 2,c 3,所以這個表示式的 答值為假,也就是值為0.然後將b c的值賦給a,那麼執行a b c之後,a 0 2 第一個方式不正確,第二個左值不能為表示式,第三個正確,第四個左值不能為表示式 c a c 2 a 0 b 5 所...
若已定義 int 10,20,30,40,50p a 2則語句 printfd
p 表示地址向後移動一個後的數 而 p 表示當前的數自加1 若有以下定義 int a 5 10,20,30,40,50 p a 則執行 p 後 我實驗了,你看看結果吧 如果你題目沒打錯的話是b 若有如下定義語句 p指向a 2 就是30,p 如果是直接輸出的話 printf p 就是輸出30 先p 在...