關於C語言指標的問題如圖,求解釋

2021-04-29 06:04:10 字數 1542 閱讀 1216

1樓:dear_佩佩

//這樣

bai理解不

int sss(char *s, char *t)//終止時(1) s 指向結尾, t 沒有到結尾, 返回 (*s - *t) 為正數

//終止時(2) s 指向結尾, t 指向結尾, 返回 (*s - *t) 為 0

//終止時(3) s 沒有到結尾, t 指向結尾, 返回 (*s - *t) 為負數

return (*s - *t);}

2樓:document樂園

因為有一個等於的符號 所以是比較大小

不懂c語言關於指標中的指標的問題,有通俗易懂的解釋嗎

3樓:匿名使用者

這兩個好像都不行吧,第一個多了一層

指標,第二個少了一層指標

首先你要明白指標的作用,他只是作為一個代號來使用,就如同一個人的綽號一樣,或者是如門牌號

c中,每一個變數都有一個記憶體空間來儲存他的資料,二這個記憶體空間是有一個地址來標示的,知道這個地址,就可以對這個變數進行操作,編輯器也是這麼幹的,編譯成exe後,是沒有變數名的存在的,只有地址來標示

一般的變數,對應的地址中儲存資料,而指標變數的地址空間中儲存的資料是一個地址的標示

如一般的變數,int a=5;那麼a這個變數空間中的資料時5,假如a變數在記憶體中的地址0000 1010

那麼給予int *p=&a;的話,那麼p變數的記憶體空間中儲存的資料就是0000 1010這個資料,也就是一個地址,但p變數申請的記憶體空間可能是0000 1016,也就是說記憶體空間中00001016這個地址中儲存的資料時0000 1010,二記憶體空間0000 1010這個地址中儲存的資料時5

訪問p就是訪問p的記憶體空間00001016,訪問*p就是訪問p指向的空間0000 1010

這樣應該明白記憶體空間和資料之間的關係以及指標的作用了吧

接著說你的程式,其實就是一個子函式引數的問題

子函式有幾個特性

1、只能返回一個資料,多個返回只能用全域性變數或者指標(陣列名也是指標)

2、實參和形參不在衣蛾地址空間中,除非用&取地址(這是一個指標的用法)

你的程式,返回兩個資料,並且不用全域性變數,那麼只能用指標

程式只能有一種void swap(int *a,int *b)

別的方式都不對

這是交換ab指標指向的空間中的內容,而不是ab指標本身

道理是不在同一個記憶體空間中,交換指標本身不能影響到主函式的資料

用這個&也是一樣的道理

4樓:匿名使用者

c語言中函式的引數傳遞都是傳遞值的。

假設swap函式你是這樣寫得

swap(int a,int b)

。這函式內部a和b的值確實是改變了,但是在main中的a和b不會改變的。

你寫得第二個程式應該編譯都不會通過。temp是一個整型值,而a是一個整型指標,兩者之間無法賦值。

5樓:adore_喬布斯

思維混亂 整形變數去存指標地址? 你也沒搞清楚區域性變數的含義。

關於c語言的問題,求解答,關於C語言的問題,求解答!

1.d 識別符號不能以數字bai打du頭 2 d 一般c關鍵字在編譯器中zhi 會出現dao變成藍色,a不是而 define是,版b 中的printf只是一個輸出權函式,c是大寫的,不是,如果是int 就是,因為在c中,大小寫是敏感的 3 d d項轉譯成字元 4 a 0x20u的意思是無符號的16進...

c語言指標問題

因為我的數字很大,用指標的話效率高。這句話不對啊,數字大小和運算時間沒有必然聯絡,比如100乘以101和1000乘以1001的運算時間是一樣的。另外,現代的編譯器優化能力非常強,不必什麼都得自己去優化。你的 就是一個例子。void main int pa 3 a for int k 0 k 2 k ...

問c語言指標問題,問一個c語言指標問題

不行,首先你要有一個陣列存放字母,然後這個二維陣列,行中表示下一個元素應該是a i j,你這樣寫的話就是跳到了下一行了,二不是下一個字母了,你需要知道指標只能指向已存在的物件。如果物件本身並不存在,那麼是無法指向的。你舉的例子裡,沒有說明 b 在哪個位置,從何指出b的地址呢。你要是想用p指向a的地址...