C語言中指標的賦值語句中那個符號什麼時候應該帶什麼時候不帶

2021-03-29 07:01:24 字數 6460 閱讀 6528

1樓:匿名使用者

變數賦值給地址(指標),變數加&或者地址(指標)加*

比如意思都是p指標指向了a變數的地址。

2樓:冥王星的小家

#include

int main( )

a中的內容是5,&是取地址符,把a的地址賦給p指標。

p是地址,*p是內容。執行一下就知道。

c語言指標什麼時候加星號什麼時候不加

3樓:吉祥二進位制

1、宣告及定義一個指標時,需要用*表示識別符號是一個指標。比如int *p;

定義一個內指標,p是int *型別,這裡的容*主要說明變數是指標型別。

2、作為間接訪問運算子

int a = 2;

int *p = &a;

printf("%d\n", p, *p);

以上面的例子來說:

p:是指標,是一個地址,它是int *型別。

*p:是指標所指記憶體中儲存的資料,是一個int型別。

4樓:匿名使用者

定義的時候加,如int *pt;定義了一個整型指標pt使用指標指向的地址內的資料的時回候加,如char arr="abc",*ptc=arr;*ptc='d';就把答arr[0]給改了

給指標賦值的時候不加,當然像上面定義的時候直接賦值是要加的,其他如int a=32,*pt;pt=&a;就是讓pt指向a

其他都不用吧

5樓:望風斬月

開始定義的復

時候加*,比如:int *p;/*這裡加制*是表bai示p是一du個int型的指標*/

指向值的時候加*,比如:int *p,a;*p=a;

指向地址的

zhi時候不加*,比如:int *p,a[10];p=a;或*p=a[0];

也就是一dao開始定義的時候的*是表明p是指標,但是到後面用的時候,p表示地址,*p表示p指向的"地址的值".ok???

6樓:

說的具體點,你這樣子我沒法說

c語言指標什麼時候要帶*什麼時候不帶*? 20

7樓:萬裡挑伊

int a;

定義:duint* p;

定義並賦值:int *point=&a;

賦值時zhi:

p=&a;

取值時:

int a=*p;

取值時:int b=*p;

指標dao其實跟普通變數的

回區別就在於它的記憶體裡裝的是答一個地址,而普通變數裡裝的是數值;

定義時加*,是為了讓編譯器認出它是一個指標,知道其記憶體裡裝的資料是地址。

而在使用時加*則是為了取出取出指標所指向的地址裡存的資料。

綜上,定義指標一定加* ,其它時候如果是取值則加*,否則不加。

有問題可以繼續**☺

8樓:

嚴格說來,指標什麼時候都不帶*。int *p,那個*是int的,不是p的。但為了在int下宣告不是指標的變數,規定在每個指標變數前加一個*,以便編譯器識別,這就使好多人誤以為*是指標變數的了。

9樓:幻月

定義指標格式是int*p;其中p是用來存放某個變數的地址的,如:int a,*p;p=&a;*p是表示指標p所指向的儲存單元中的

專值,如屬上面的a值,而p是a的地址(&a),當你需要呼叫a的值時,就用*p;呼叫a的地址時就用p.

10樓:匿名使用者

指標是c語言很重要的知識,建議仔細看看。

定義指標的時候是一定要加*的,這樣才會識別為指標。定義好了就不用加了。

當然如果指標指向函式a,用的時候也要加。

總之,分不同情況,看指標指向的是什麼了。

11樓:匿名使用者

帶*是指標的值,不是指標本身,不帶*才是指標本身。比如 int *p;p就是個指標變數,這時*p是沒有意義的,只有 p=new int;或把別的變數的地址賦給p,*p才有意義。

12樓:匿名使用者

二樓正解。不過指標指標的時候帶*,表示指標地址的時候,不帶

13樓:匿名使用者

宣告的時候必須帶* ;

使用的時候要取指標變數的值不帶*,此時取得的是一個地址;要取實際值加*,***

14樓:逍遙足球子

* 在於c語言當中對於指標來說,表明取出當前指標指向記憶體地址中的記憶體。

15樓:eva殤

帶*的情況

1.宣告的時候需要用*來表示宣告的物件是一個指標。如:int* p;

2.使用的指標的

專值的時屬

候。如:printf("p = %d",*p);

3.給指標賦值的時候。*p = 5;

不帶*的情況:

1.使用指標的時候。如:int a = 0; p = &a;(p是int*)

2.表示字串首地址的時候不用*。如:char* ch = "hello"; printf("%s",ch);

16樓:匿名使用者

宣告或者定義的時候帶*的話,說明它是一個指標型的變數,其它時候說明要給這個指標賦值!!

17樓:匿名使用者

對於指標的*最好和取地址&一起聯絡起來學

18樓:我姐是恐龍

同學這個不抄能硬背 要理解

帶*表示的那bai個記憶體

du地zhi址儲存的值

不帶*表示那個記憶體的地址

int *p,a; p是指標 a是整數daoint *p,*a; p是指標 a也是指標int *p=&a等價int *p; p=&a;

19樓:匿名使用者

int *ie;

int ir;

ie=&ir;//不帶星號代表地址吧

*ie=10;//帶星號代表指向地址的值

c語言中用指標賦值字串為什麼不加*,如下

20樓:匿名使用者

a="cool";

這是地址來賦值,將一個常量字串

自的首地址賦值給a這個指標。

*a="cool";

這是字元賦值,不是字串!雖然a叫字串指標,但char* a這樣的定義,*a必然是一個字元,而不是多個。因此後面的常量會被忽略為一個字元,進行數值賦值(也可以理解為拷貝賦值,區別於地址賦值)。

在a沒有分配地址的情況下,直接 *a=「***」 會造成記憶體報錯,而a=則不會。

c語言中指標加不加*有什麼區別

21樓:丶自由丨落體

剛開始學習

baic,同樣有這du個疑問,在網上zhi查了一下,沒

有什麼讓人一目了dao然的解釋。

專用int *x作為屬

例子。既然int *x 只是定義了一個記憶體空間,儲存一個記憶體地址,那麼普通的int x應該也可以做到。

int num = 5;

int *x = #

int x1 = #

x 和 x1 同樣儲存的是 num 的記憶體地址,但是隻有用了*宣告的指標能夠通過 *x 來訪問 num .

printf("%p , %p", x ,x1)  // 這一行會輸出兩個一樣的記憶體地址。

printf("%d" , *x )  // 成立,不報錯,正常輸出 5。

printf("%d" , *x1 )  // 不成立,編譯器會報錯,『*』的運算元必須是指標。

第二個變數名使用x1的原因是,當你嘗試 printf 輸出的時候,指標 *x 會強行覆蓋普通的 x 。

22樓:匿名使用者

不加*取地址,加了*取地址裡的內容

23樓:匿名使用者

比如 int a=5; int *p =&a; p就是5的地址 *p就是p地址上的內容5

24樓:匿名使用者

因為在bai函式形參中 a是指標(du地址),所以zhi char *t定義的是dao

指向字元的指回針

你記住在初始化的答時候就是這麼定義的

初始化指標例子

int h = 5;

int * pt = &h;

在這種情況下,被初始化的是指標,而不是它指向的值。也就是說,上面的語句將pt(而不是*pt)的值設定為&h

25樓:鈕玉芬孛辰

基本來上沒有區別,c++僅僅只是在c語言

自的基礎上bai

增加了物件導向的概念,所du有它又被稱為zhi是「帶類的daoc」,因此,c++在指標操作上增加了指向物件的指標(引用);但究其本質而言,指標仍然是記憶體中的地址,這一點沒有改變.

26樓:hay暗夜

不加就不是指標就像是定義陣列的。這是一種語法規則

27樓:狼性我行我素

加*號代表的是訪問指標儲存地址上的資料!

不加*號就代表的給這個指標變數賦值只能是指標!

28樓:碧血玉葉花

加不加bai括號,是

陣列指標,還du是指標陣列zhi的區別

*p[2] 是一個指標dao陣列,內首先它容是一個陣列,陣列中存的是指標,存指標的陣列。

(*q)[2] 是陣列指標,加括號先與 *結合,它是一個指標,指向一個第一維包含2個元素的2維陣列,存陣列地址的指標。

q=s ; 把 陣列 s 的地址存入 qp[0]=s[0] 把s[0] 第0行的首地址存入 陣列p[0]中

29樓:匿名使用者

問題描述的不是很清楚

c語言指標符號問題?

30樓:匿名使用者

當你想儲存一個地抄址的時候不加 *:

int a = 0;

p = &a;

當你想取指標裡的值

的時候加 * :

int b;

b = *p; ==> b = *(&a) ==> b = 0; // 就是說把a地址儲存的值取出來。

當*p的值還是指標的時候:

int *p = null;

int *q = null;

int a = 0,b =1 ;

q = &a;

p = &q;

*p= &a; // 結果就是q 指向a , p指向q; (*(*p)) 等於 0;

p= &a; // 結果就是p指向a; q 也指向a; p

31樓:十分不強力

指標變數和普通變數沒有什麼區別,指標32位四位元組,裡面儲存的是一個內版存空間權的地址,就像一個整形變數int a, a就可以代表一個整數,一個指標變數int* p,p就可以代表一個地址資料,而*地址,代表去這個地址指向的記憶體空間取出裡面的內容,因此如果是要取出這個指標所指向的記憶體裡面的內容就是*p,而如果是需要獲得那個記憶體的地址,或者讓另外一個指標指向這個空間時,就可以使用int* pb;pb=p;

&變數名這是獲取儲存這個變數的記憶體空間地址應該說c語言是門十分靈活的語言,型別幾乎可以說無所謂了,有的只有記憶體和讀取的方式,什麼幾級指標,都沒有意義,就算是一整形,只要強轉,也可以當作地址資料來用,只是可能會段錯誤,因為沒有做地址對映

有的時候確實不太好理解,不過這個隨著時間的積累,慢慢會理解的

32樓:森林工會會長

定義指標變數的一般形式為:

基型別 *指標變數名;

下面都是合法的定義:

版float *pointer_1; //pointer_1是指向float型變

權量的指標變數

char *pointer_2; //pointer_2是指向字元型變數的指標變數

可以用賦值語句使一個指標變數得到另一個變數的地址,從而使它指向一個該變數。

如:pointer_1=&i;

pointer_2=&j;

在定義指標變數時要注意兩點:

(1)指標變數前面的「*」,表示該變數的型別為指標型變數。

例: float *pointer_3;

指標變數名是pointer_3 ,而不是* pointer_3 。

(2)在定義指標變數時必須指定基型別。

需要特別注意的是,只有整型變數的地址才能放到指向整型變數的指標變數中。

下面的賦值是錯誤的∶

float a;

int * pointer_1;

pointer_1=&a;/* 將float型變數的地址放到指向整型變數的指標變數中,錯誤 */

請牢記,指標變數中只能存放地址(指標),不要將一個整數(或任何其他非地址型別的資料)賦給一個指標變數。

這樣你明白了嗎?不明白再追吧!!!

c語言中指標加減問題,求解答C語言中指標問題真的求,搞不懂,求解答?

首先 float a 10 p,q p a 4 q a 7 那q p 2 a 4 與a 7 之間有兩個元素 這裡就不對了,q p 3 不是等於2,可以用printf d q p 看看。p 3 p 12 是地址按 位元組 排列的位置差,表示p 3和p之間有12個位元組 q p 3 表示q和p之間有3個...

c語言中指標中的是什麼意思,C語言中,指標中的 是什麼意思

在宣告int pirand中 表示這個變數是int型別的指標 在宣告之外 可以理解成一個運算子 或者一個函式 和 是一對逆運算 的意思是讀一個變數的地址 比如你宣告瞭int a a是a的地址可能是xx1001之類的可以在除錯裡看一下 的意思是讀一個地址指向的內容 pirand pirand rand...

c語言中賦值語句的語法是怎樣的,C語言中賦值語句的語法是怎樣的

賦值的語法規則就是 資料型別 變數名 表示式 表示式可以理解為一個值或一個計算公式就行,表示式加一個英文符號分號就是語句。例如 我們今天要用到的,我買了幾斤蘋果。就可以這樣寫 方式一 方式二 擴充套件資料1 c語言中,賦值運算的操作是有方向的,即將右側表示式的值 也稱為右值 賦值左側的變數,只能是標...