1樓:
*s在定義的時候是定義乙個指標變數,使用的時候是取出指標變數s所指向的單元的值,s 就是乙個陣列。其實陣列和指標是有密切聯絡的,比如s[1]相當於*(s+1)
2樓:
*s是乙個指標變數,指向變數s的指標。而s是乙個指標陣列,代表了乙個陣列名為s的陣列。
3樓:叄萬英呎
char *s 代表的是乙個指向字元的指標,宣告之後可將其指向char s[ ];char s[ ] 代表乙個字元陣列,而陣列名s就是指向陣列s [ ]的乙個指標,所以可以這樣:char *s =null;char s1[ ]="hello";
s = s1;建議看下c和指標這本書,講的很詳細。
4樓:匿名使用者
二者完全可以互換,意義相同,唯一的區別是*s中s是乙個變數,又叫指標變數;s中的s也是指標,但是,是乙個常量,就是指標常量。簡單說,就是乙個值可以變,乙個值固定。
5樓:匿名使用者
*s等價於*(s+0) 等價於 s[0]
s 中的s代表字串的首位址,即第乙個字元的位址,讀取的時候就是從第乙個字元的位址開始,直到遇到'/0'停止。
例如,char s[20]=; 當你訪問字串s的時候,系統從記憶體中讀取s字串,從第乙個字元的位址開始,直到'/0' (這個是初始化的時候自動加上的)。原字串在記憶體中為abcdefe/0
c語言中(*s++)、s++、*s++之間有什麼區別啊
6樓:匿名使用者
*s++的值是執行自增運算之前s指向的字元,字尾運算子++表示在讀取該字元後才改變s的值
7樓:匿名使用者
*(s++)指標後移乙個元素,並取其值
s++指標後移乙個元素
*s++指標指向的元素加一
8樓:來自茅巖河雪膚花貌的薄荷草
s是指標變數嗎
假設s是指標變數,(*s++)就是s包含的指標指向的記憶體空間的值加一。
s++則是表示加上s的基型別占用的位元組數,例如s是int型別的,佔4個位元組,s++就是其值加4個位元組。
*s++的意義和第乙個相同
c語言中 **s是什麼意思?和*s與s有什麼區別?
9樓:
**s是二維指標,是乙個指向指標的指標。
假設 int a, *p,**s;
則 p=&a; s=&p;
能看懂嗎?這裡的**s==a,*s==p, s就是乙個存放著p的位址的指標變數
10樓:匿名使用者
**s是二級指標,指向指標的指標,*s是一級指標,指向變數的指標,s就是變數
c語言中(*s++)、s++、*s++之間有什麼區別啊?求高手解答。。
11樓:jiawen廖
(*s++) 解引後得到s指向位置的值,將該值作為表示式的結果,然後s指標往後偏移s++ 即s指標往後偏移*s++ 。
1、編譯器解析到*,判斷為指標運算符號,需要乙個標示符或者表示式;
3、繼續解析到++,由於*與++是同一優先順序,結合性為右到左,所以等同於*(s++);
4、然後是=,判斷為賦值運算子,優先順序比++低,因此前面的部分可以直接進行計算。
12樓:
當*為乘法時,++優先順序大於*;但是當*為指標時,它們優先順序相同,結合方向為從右往左,
*s++等價於*(s++)
例:*s++=e指先把e賦給*s,再s=s+1(指標s指向下乙個)。
*++s=e指先s=s+1(指標s指向下乙個),再把e賦給*s。
13樓:匿名使用者
(*s++)與*s++根本就是一樣的呀。 是不是*(s++)呀s++是指位址偏移,偏移乙個型別的位元組,假如s是int的指標,那就偏移4個位元組,陣列的話就相當於移到下乙個元素。
*是解除引用,就是得到該指標所儲存位址對應的值。
*(s++)與*s++主要是優先順序的問題了。因為*的優先順序高於++ 而又低於()
所以*(s++)是先發生位址偏移,再解引用得到值*s++則是先對s解除引用,然後再發生位址偏移。(這裡不知是解除引用後發生位址偏移還是對*s後的值+1)
14樓:俏皮妹
要考慮到指標的解引用,以及操作符的優先順序
「*s」和「&s」有什麼區別?
15樓:熱巴老師
區別如下:
*s(s必須是指標,否則出錯)表示取出s位址的內容。
&s 表示取出s的位址。
舉例 scanf(「%d」,&s);
2.若你定義指標變數的時候則,兩種方式,一種定義的時候就賦值,int *s=10;另一種,先定義後賦值,int *s ;*s=10;兩種情況下的重新賦值,都必須是 *s=20;此時s就是位址。此時如果你想將s的值賦值給另乙個變數int *b;則*b=*s把s中的內容給b位址中的內容,但b和s的值都不變,即位址不變,也可以b=s把s的位址賦值給b,也可以達到賦值的效果,但改變了b指標的位址;
舉例:scanf(「%d」,s);
3.簡單來說&就是取位址運算子,*是去位址裡的內容。
在c++中,有一種定義函式形參的方式int fun(int &s);這是一種引用傳遞。
16樓:匿名使用者
這是有區別的。
首先你要明白s的型別是字元陣列。也就是裡面儲存的是字元型別的元素。
n是整型的型別。
那麼我們來看看這個函式的功能,他是要把乙個字元型別的元素轉換成乙個整型。
這裡我們需要乙個知識點:在計算機中字元型別的元素是按照ascii標準進行儲存的,也就是每乙個字元元素都是對應乙個數字的。比如:
『a』對應65,『0』對應48等。所以如果你直接將乙個char型的變數用%d(int型)輸出的話,得到的是他在計算機總儲存的數值。
本程式中通過for迴圈判斷出所有s中1~9的字元,然後利用s-'0'算出他們的差值,這便是他們對應的整形變數的值。如果輸出s的話,那麼輸出的是字元所對應的數字(參考ascii對照表)
順便解答一下為什麼n*10.因為return n。只能返回乙個值。所以他要改變所有的字元必須把得到的數重新組成乙個整數賦值給n才行。
比如得到第乙個數1,在得到第二個數2,如果不*10,2就會把1的值覆蓋掉。所以將1*10再加上2得到12.後面同理120+得到的第三個數。
望採納哈
17樓:匿名使用者
然後在struts配置檔案里設跳轉。
設跳轉 c語言中a->s[i]與a[i].s的區別 18樓:匿名使用者 a->s[i]是a位址上的結構體成抄 員變數s的第i個元素。 寫成非指標的方式,就是a[0].s[i]; 這種寫法,要求a和s都必須是指標型別。 a[i].s是a位址上,第i個a中的成員變數s。 這種寫法,要求a必須是指標,而s不一定是指標。 對比a[0].s[i]和a[i].s,可以看出,這兩個是完全不同的意義。 19樓:匿名使用者 a是結構體陣列 的陣列名,a[i]表示陣列中的第i+1個元素,a[i].s表示該結構體中的元內素s,這就是 . 運算子的作 容用而 -> 運算子則是對指標(即位址)操作而言的:符號左邊為指標,右邊為結構體元素 故a[i].s <=> (a+i)->s 20樓:舞亦香滿衣 a[i].s 是屬性的訪問方式 a->s[i]是指標的訪問方式 21樓:匿名使用者 a->s[i]這本來就是錯的!s是int型別,又不是陣列,也不是指標! 用生活中的數學來講就是 第一種相當於 x 1 1 第二種相當於 x y 1 y 1兩種結果一樣,第二種不過是繞了個圈子,把結果賦值過去了希望能幫到你 沒有什麼不同啊!都是將i使用之後再加一,對於陣列元素s i 和s i 是相等的。s i 只是比 s i i 寫法上簡單一點,其實功能是一樣的。沒區別 ... include int main void printf sum lf sum return 0 這種寫法因該是標準的 內 僅供容參考 include stdio.h double fac int a main printf s 1 1 1 執行版結果權 please input a number ... 和 你說運算子中的區別還是引用標頭檔案的區別?如果是在標頭檔案引用中,區別就是例如 include stdio.h 這種方式會先在當前目錄下尋找指定檔案,然後再去環境變數指定的目錄中尋找 include 這種方式則不會在當前目錄中尋找檔案。如果是運算子,表示小於,屬於二元運算子 表示字串,c語言要求...在c語言中s ii 的區別,在C語言中s i 和s i i 的區別
C語言問題計算s
c語言中與有什麼區別,c語言中 c與 s的有什麼區別?