c語言s 和s的區別,C語言 s 和s 的區別

2021-05-26 09:51:13 字數 3992 閱讀 7386

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型別,又不是陣列,也不是指標!

在c語言中s ii 的區別,在C語言中s i 和s i i 的區別

用生活中的數學來講就是 第一種相當於 x 1 1 第二種相當於 x y 1 y 1兩種結果一樣,第二種不過是繞了個圈子,把結果賦值過去了希望能幫到你 沒有什麼不同啊!都是將i使用之後再加一,對於陣列元素s i 和s i 是相等的。s i 只是比 s i i 寫法上簡單一點,其實功能是一樣的。沒區別 ...

C語言問題計算s

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 ...

c語言中與有什麼區別,c語言中 c與 s的有什麼區別?

和 你說運算子中的區別還是引用標頭檔案的區別?如果是在標頭檔案引用中,區別就是例如 include stdio.h 這種方式會先在當前目錄下尋找指定檔案,然後再去環境變數指定的目錄中尋找 include 這種方式則不會在當前目錄中尋找檔案。如果是運算子,表示小於,屬於二元運算子 表示字串,c語言要求...