關於c語言程式中指標的一道選擇題

2021-05-02 22:16:42 字數 1237 閱讀 3638

1樓:匿名使用者

首先懷疑你的程式有筆誤,估計你把point( p ) 寫成了 point()了

這樣的話,你的題目就變成這樣了.

point(char *p)

main()

這個函式,其中(char *p)的p為形參(就是形式的引數)。可以把這個函式改為point(char *tmp_p)結果是一樣的,但是更容易理解了。

在main函式中,p=b。而b是乙個陣列名,b也是改為point(char *tmp_p)了。

其實呼叫point(tmp_p);的過程是這樣的:

tmp_p = p;

tmp= tmp+3;

這樣可以看出變化的是tmp, p沒有任何變化。所以p這個位址沒有變,所以p這個位址(也就是說陣列b的首位址)裡放的還是『a』。

另外,tmp_p這個變數的生存週期就是point( p )函式的執行週期。關鍵要明白main函式中的p和point(char *p)中的p不是乙個指標(變數),是兩個指標(變數)。在呼叫point( p )函式的時候把main中的p賦值給了point(char *p)中的p。

2樓:匿名使用者

point(char *p)

為p指標向下順移定址三位

char b[4]={『a',『b',『c',『d』},*p=b;

此時(*p)的指標值為b[0]指向b陣列頭位置,即當前記憶體狀態(*p)='a',p=b;

point();應該把引數加進去,應該是pint(p);得到結果是p+=3,即&b[0+3]=&b[3];所以當前(*p)=b[3]='d'

所以最終執行結果*p為 'd'

3樓:匿名使用者

point();!!!

確定這條語句對嗎!!!???應該編譯不過吧

c語言關於指標的一道選擇題

4樓:

d .第一次列印*(p++),先取值後++,也就是列印完p的位址才偏移的。k=&p,那麼**k就等價於*p,所以列印的是第二個陣列的值

c語言關於指標的一道題。

5樓:匿名使用者

sum=sum+(*p); 二維陣列的指標不是怎麼用的吧···直接加個一就相當於指向了第二行的首位址了···

6樓:匿名使用者

printf("%5.2f",*((*(p+n-1))+i));

一道C語言中的指標問題,一道C語言的指標問題

include void main 第乙個空填char str1,str2 後面如樓上所說。p1 p1 p2 一道c語言的指標問題 a char s 5 abcde bai 字串這樣賦值時,末尾有乙個du預設的zhi串尾符 0,所以字串 abcde 的實際長度是dao 回6,s 5 是儲存不下的,溢...

一道c語言讀程式題,一道C語言讀程式題

你除錯下。第二個for只列印出5 3個 第三個for 不關他的事。只迴圈了二次 第三個for 列印出當i 1 時 列印乙個 第二個for打的4個 換行 當i 2時 j 3 列印出三個 第二個 for 列印的3個 換行當i 3時 j 5 列印出五個 第二個for 列印的2個 換行所以結果是那樣了.應該...

c語言程式設計,一道題不會,求大神,一道C語言程式題,求大神幫忙!!!

include stdio.h include math.h main else else if a b a c else 知道三邊計算三角形面積可以使用海 式 海 式 s p p a p b p c p為周長的一半 p a b c 2 c語言中計算根號使用標頭檔案 include math.h 因...