c語言中指標加不加有什麼區別,C語言指標什麼時候加星號什麼時候不加

2021-03-12 05:24:12 字數 8045 閱讀 5739

1樓:丶自由丨落體

剛開始學習

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 。

2樓:匿名使用者

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

3樓:匿名使用者

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

4樓:匿名使用者

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

指向字元的指回針

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

初始化指標例子

int h = 5;

int * pt = &h;

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

5樓:鈕玉芬孛辰

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

自的基礎上bai

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

6樓:hay暗夜

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

7樓:狼性我行我素

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

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

8樓:碧血玉葉花

加不加bai括號,是

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

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

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

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

9樓:匿名使用者

問題描述的不是很清楚

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

10樓:吉祥二進位制

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

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

2、作為間接訪問運算子

int a = 2;

int *p = &a;

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

以上面的例子來說:

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

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

11樓:匿名使用者

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

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

其他都不用吧

12樓:望風斬月

開始定義的復

時候加*,比如: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???

13樓:

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

c語言中函式名前加*與不加*有什麼區別

14樓:匿名使用者

加*是返回指標

例如:int add();//add()函式返回的是一個int型別的值

int* add();//add()函式返回的是一個int型別的指標

15樓:

函式原型宣告和定義中, 函式名前加 * 的表示返回值是指標。

例如標準庫函式gets():

char *gets ( char *str );

從鍵盤讀入一行字串,如果讀入成功,返回值與str 裡 的 字串相同。

--------------

int (*p)(); 這種宣告是「定義 p 是一個指向函式的指標變數,此函式帶回整型的返回值。」例如:

int max(int,int); //函式原型宣告int min(int,int); //函式原型宣告int (*p)();

int a,b,c;

p=max; // 將函式 max 的入口地址賦給指標變數pscanf("%d,%d",&a,&b);

c=(*p)(a,b); // 等於 呼叫 c=max(a,b);

p=min; // 將函式 min 的入口地址賦給指標變數pc=(*p)(a,b); // 等於 呼叫 c=min(a,b);

16樓:匿名使用者

加*的表示函式指標,可以指向一個函式的地址,然後再呼叫函式。

書上都有,你可以去找找

17樓:宿苓貝雁菱

可以說加不加int是沒有區別的。在ansic的標準中,main的標準返回值是整型,如果你什麼都沒有加,編譯系統會自動加上int型別的。這時如果你使用gcc的話(vc是沒有的)會有一個警告。

void是無型別,表示沒有返回值,你的主函式如果不需要返回的話,最好加上它。

最後,建議你的主函式顯式的使用int型別,並return0;這是一個好習慣,開始的時候沒什麼用,時間長了才能看出來。

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

18樓:萬裡挑伊

int a;

定義:duint* p;

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

賦值時zhi:

p=&a;

取值時:

int a=*p;

取值時:int b=*p;

指標dao其實跟普通變數的

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

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

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

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

有問題可以繼續**☺

19樓:

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

20樓:幻月

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

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

21樓:匿名使用者

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

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

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

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

22樓:匿名使用者

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

23樓:匿名使用者

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

24樓:匿名使用者

宣告的時候必須帶* ;

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

25樓:逍遙足球子

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

26樓: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);

27樓:匿名使用者

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

28樓:匿名使用者

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

29樓:我姐是恐龍

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

帶*表示的那bai個記憶體

du地zhi址儲存的值

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

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

30樓:匿名使用者

int *ie;

int ir;

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

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

c語言中「指標」和「指標變數」的區別是什麼??

31樓:大野瘦子

1、概念不同

「指標」是概念,「指標變數」是具體實現,指標也是一個變數,所以需要進行定義,而對於指標的定義,與一般變數一樣。

2、 存放地址不同

一個變數的(記憶體)地址稱為該變數的「指標」,通過指標能找到以它為地址的記憶體單元。而指標變數是用來存放另一個變數的地址的(即指標)。

指標和指標變數的關係

1、指標就是地址,地址就是指標。

2、地址就是記憶體單元的編號。

3、指標變數就是存放記憶體地址的變數。

4、指標和指標變數是兩個不同的概念,但要注意的是,通常我們敘述時會把指標變數簡稱為指標,實際他們含義並不一樣。

注:指標裡存的是100. 指標:地址 - 具體。

指標裡存的是地址,指標:指標變數 -可變。

指標的好處:

1、直接訪問硬體

2、快速傳遞資料(指標表示地址)

3、返回一個以上的值返回一個(陣列或者結構體的指標)4、表示複雜的資料結構(結構體)

5、方便處理字串

6、指標有助於理解物件導向

32樓:蓋辜苟

用例子來看一下。

int a=3;

int *p;

p=&a;

現在來看一下。a=3這個式子先解釋一下

等式右邊是常量,左邊是變數。

同理的p=&a,左邊的是指標變數,右邊的是指標

指標的基本概念:為了區別記憶體的不同位置,記憶體被分成位元組,記憶體的全部位元組順序地賦予一個稱為地址的編號。程式中的變數將在記憶體中佔據一定的記憶體位元組,在這些位元組中儲存的資料資訊稱為變數的內容。

一個變數佔用連續的若干個記憶體位元組時,最前面的一個位元組的地址就作為該變數的地址。指標就是記憶體地址,是變數的地址,或函式的入口地址。變數的地址在程式執行時,起著非常重要的作用。

當計算機在計算含有變數的表示式時,計算機按變數的地址取出其內容,並按變數的地址將計算結果存入到變數佔據的記憶體中。

如**:  int x=l;  x=x+2;  其中語句「x=x+2;」中的第一個x涉及到變數x佔據的記憶體,第二個 x是引用變數 x的內容。該語句的意義是「取x的內容,完成加上2的計算,並將計算結果存入變數x佔據的記憶體中。

」指標變數和它所指向的變數:在c語言中,地址也作為一種值,能被儲存、比較、賦值,並稱地址資料為指標型別,而稱儲存地址值的變數為指標變數,簡稱指標。c程式可用運算子&取變數的地址,如表示式&x的值就是變數x的地址。

程式除能按名引用變數外,也可利用變數的地址引用變數。按變數名引用變數稱為直接引用,而將變數a的地址存於另一變數b中,藉助於變數b引用變數a稱為對a的間接引用。

定義指標變數的一般形式為:  型別 * 指標變數名;  或  型別 * 指標變數名=初值表示式;  其中,指標變數名是識別符號,指標變數名之前的符號「*」,表示該變數是指標型別的。而最前面的「型別」,表示該指標變數能指向變數或函式的型別。

初值表示式是一個地址表示式,如表示式中有某變數的地址表示式,則這個變數應是前面已定義的。

在c語言中,當定義區域性指標變數時,如未給它指定初值,則其值是不確定的。程式在使用它們時,應首先給它們賦值。誤用其值不確定的指標變數間接引用其它變數,會引起意想不到的錯誤。

為明確表示指標變數不指向任何變數,在c語言中用0值表示這種情況,記為null。

如  ip= null;  也稱指標值為0的指標變數為空指標。對於靜態的指標變數,如在定義時未給它指定初值,系統自動給它指定初值0。

指標變數取程式物件的(開始)地址值,不能將一個整型量或任何其它非地址值賦給一個指標變數。另外,指標變數對所指向的物件也有型別限制,不能將一個不能指向的物件的地址賦給指標變數。

如有以下定義:  int i=100,j,*ip,*intpt;  float f,*fp;  以下**如註釋所敘。  ip=&i;/*使ip指向i*/  intpt=ip;/*使intpt指向ip所指變數*/  fp= &f;/*使fp指向正*/  ip=null;/*使 ip不再指向任何變數*/

在電腦科學中,指標(pointer)是程式語言中的一個物件,利用地址,它的值直接指向(points to)存在電腦儲存器中另一個地方的值。由於通過地址能找到所需的變數單元,可以說,地址指向該變數單元。因此,將地址形象化的稱為"指標"。

意思是通過它能找到以它為地址的記憶體單元。 在高階語言中,指標有效地取代了在低階語言,如組合語言與機器碼,直接使用通用暫存器的地方,但它可能只適用於合法地址之中。指標參考了儲存器中某個地址,通過被稱為反參考指標的動作,可以取出在那個地址中儲存的值。

作個比喻,假設將電腦儲存器當成一本書,一張內容記錄了某個頁碼加上行號的便利貼,可以被當成是一個指向特定頁面的指標;根據便利貼上面的頁碼與行號,翻到那個頁面,把那個頁面的那一行文字讀出來,就相當於是對這個指標進行反參考的動作。

指標是程式設計語言的一個重要概念。指標在c程式中有以下多方面的作用:

利用指標能間接引用它所指的物件。

利用各種型別的指標形式引數,能使函式增加描述能力。

指標與陣列結合,使引用陣列元素的形式更加多樣、訪問陣列元素的手段更加靈活。

指標能用來描述資料和資料之間的關係,以便構造複雜的資料結構。當一個資料a要關聯另一個資料b時,在資料a中增加一個指向資料b的指標就可實現資料a關聯資料b。結合系統提供的動態分配儲存設施,又能構造出各種動態資料結構。

c語言中指標的作用是什麼C語言中指標的作用是什麼?

指標指向地址,指標的特性就是在地址不變的情況下,可以很方便的修改所指向的內容 最重要的應用有兩個,一是函式引數,二是函式指標函式引數 函式返回值只有一個,如果想回傳多個引數,則必須使用指標函式指標 典型應用就是 函式 callback 簡單地說指標就是指向變數和物件的地址。指標的用途非常廣泛,比如如...

這些C語言指標分別是什麼意思C語言中指標和指標變數的區別是什麼??

都是看與p結合的優先順序 1 p是個陣列,p是含有3個元素的陣列,每個元素都是int指標 2 p是個指標,指向一個 只有3個元素的陣列 的指標。3 p是個函式名 即p是函式 只有一個int引數,返回值為int指標 4 p是個函式指標,指向 只有一個int引數,返回值為int 的函式。5 p是個函式指...

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

int p 47 這個用法是不正確的 這個語句等於下邊的 int p p 47 你直接將指標p的值賦值為47是很危險的 應為如果記憶體中地址為47的地方剛好是某個系統程式或關鍵模組佔據的話你進行下面 p 20 的賦值行為 有可能導致系統直接崩潰哦 是的,不過這很危險。而且cpu的32位保護機制也未必...