求c語言指標的入門習題與解答
1樓:
我給你講一下指標的概念吧。
指標跟一般變數的區別。
變數是用來儲存資料的資料型別,它們實際上是乙個位址,位址裡存的資料就是變數儲存的值。你用scanf來對乙個變數(比如a)進行賦值: scanf("%d", &a); a表示變數a的位址,這裡的意思也就是輸入乙個數然後把這個數存在乙個叫a的變數的位址裡面。
這裡還有另外一種方法可以給a賦值因為scanf的引數是("乙個數", 目的地變數的位址).
而指標是乙個特殊變數,也存在堆疊裡面,但是它們儲存的資料卻是另乙個變數的位址。 比如。
int b = 1; int *a = &b; 這裡表示定義乙個變數然後它存的值是變數b的位址。那麼a = (b的位址), a =(b的位址儲存的值(也就是1)) 而你定義指標變數時輸入的指標變數型別 int * float* double* char* 取決於它指向的普通變數的資料型別。
2.二級指標。
這裡定義乙個指標b 用來儲存a的位址, c是二級指標用來儲存b的位址。 那麼 c = (b的位址), c = (b的位址儲存的值,也就是b,也就是a的位址), c =(b的位址儲存的位址的值,也就是*b, 也就是a儲存的值)
3.代替陣列。
int a[3] = ;
int *b = a;
int a[3][3] = ,int *b[3];
int **c;
b = a ====> b = a[0], b =
b = a; b[1] = a[0][1];
c = a; c = ,,c[1] = a[1] =
c[2][2] = a[2][2]
你應該瞭解了吧?
c語言 指標習題 有乙個班4個學生,五門課程。 1.求第一門課程的平均分 2.找出有兩門以上課程
2樓:林剛祝
1.模運算,即求餘數。 表示式 a % b 就是計算 a 除以 b 得出的餘數。
例如: 4 % 3 的結果是 1 2.轉義符,比如在scanf()和printf()中的輸入引數常出現帶有%的表示引數型別的變數,如%d,%f等。
c語言題 指標 請大佬幫忙看一下這題,答案是a
3樓:自我程式設計
++和*同級,結合方式從右往左。
px初值x[0]位址,++px,就是++(px),先對位址值++,再取值,所以是11。(執行後px依然指向x[0],而x[0]的值是11)。
px初值x[0]位址,(*px)++先取值,再對位址值++,所以是11。(執行後px依然指向x[0],而x[0]的值是12)。
初值同上,*px++,相當於*p;p++;兩個表示式,先取值,再位址自增,所以是12。(執行後px指向x[1],後面的*px取的就是20)。
初值同上,*+px就是*(+px),先位址自增,再取值,也就是取x[1]的值20。(執行後px指向x[1],所以後面*px取20)。
所以是11 11 11 12 12 20 20 20。
c語言指標習題解答
4樓:**的可樂
int a,b[5]; // 宣告。
a=0; b[0]=3; // 初始化。
func(&a,b); // 相當於b[0]=a+6; 即b[0]=0+6;
printf("%d", b[0]);// func為傳址呼叫,b[0]為6
答案為6,原因見上面的註釋。二樓正解。
如果是考題,就不用多想了。
如果是自己寫的,第一,b[5]未完全初始化,應該避免。第二,func中應當對指標引數的合法性進行判斷,避免非法呼叫。
5樓:網友
#include
void func(int *a, int b)int main(void)
a = 0;
b[0] = 3;
func(&a, b);
printf("b[0] = %d", b[0]);
return 0;
程式輸出的結果是:
b[0] = 6
分析: 因為func函式使用的是「傳址方式」,所以對b陣列所做的改變都被保留了下來。*/
6樓:培亮於
6,func(int *a,int b);使用的是傳址方式,即a為 整型指標變數,b為陣列的基位址。
7樓:網友
b〔0〕=*a+6; 應該改成都市 b〔0〕*=a+6;
如果是這樣的話答案是18。
c語言指標變數方面的題,求大神解答?
8樓:水焱新火
先看圖,這就很好理解了,遇到這種時候,能上網,就自己寫了看看結果,倒推。
p得到的是a的位址,&p 就是p的位址,*p 是p儲存的位址指向的資料,就是x的資料,意義上*p就是x,第二題就很好理解了,&*p 就是&x了。
反過來說第一題,&p是p的位址,*&p就是 系統給p分配到的位址指向的資料,就是p本身的儲存,也就是賦值的&x,就是x的位址,答案裡面沒有&x,但是有p
實際執行時候取到的值是一樣的,只是考個邏輯。
9樓:網友
以上c語言選擇題的答案為:
19 a21 d
10樓:聽不清啊
兩個題目的答案為:
21)d19)a
c語言習題求解 已知指標p的指向如圖所示,則執行*p++;後*p的值是
11樓:匿名使用者
*p++,首先要知道*和++的優先順序相同,自右向左結合。
則相當於*(p++)但是p++的含義是先用後加。所以先用,就是*p這個操作,後加也就是執行p++。
所以*p++就等價於:
所以當前*p的值就是20,然後p++(該p是指標不是*p所說的指標指向的值)指標後移指向a[3]位置。
此時,*p為30.
12樓:網友
優先順序一樣,結合方向由右向左,所以,*p++和*(p++)效果一樣。結果20,指標後移。
13樓:網友
30樓主說的是先執行*p++;後*p的值,應該是30
c語言指標問題,求解答,C語言中的指標問題,求解答
1,是取值運算子,因為你要判斷tt的值的情況,所以要用 2,tt 相當於 tt tt 1 這個是指標向後移動,不需要取值,謝謝,望採納 你的tt是指標吧。tt指向的是 位址 比如位址值為 10ff 1000 tt是取這個位址中儲存的資料,而tt 意思把tt指向的位址值 1,即tt現在指向了 10ff...
c語言的題,求大神解答,C語言題,求大神解答
解 1 a項錯誤 有些不可見字元可放入緩衝區,例如 回車 空格。b項錯誤 有些輸入函式有緩衝區,有些沒有,例如 getchar 有緩衝區,getch 無緩衝區,getche 無緩衝區。c項錯誤 緩衝區不需要定義。所以選d。2 getchar 函式有緩衝區。getchar函式的返回值是使用者輸入的字元...
求大神解答一下為什麼,C語言指標那塊不是很懂
char a 2 這裡定義乙個指標陣列a,其中有兩個元素,均是字元指標,但指標的指向還沒有,所以是不能用的 char b 2 100 a 0 b 0 a 1 b 1 給兩個指標分別分配指向printf please enter the source file name n scanf s a 0 p...