c語言指標與陣列問題,運算子到底是個什麼鬼

時間 2022-02-17 01:42:55

1樓:匿名使用者

*p是取p指標所指向的記憶體內容

*p++是分兩個部分的:先取指標內容,再移動指標

而結合具體的**,移動指標是在本**之後進行的:

對於第一題來說,當執行時*p++本身的值為a[1]的內容,然後執行p++後指向a[2],所以再取*p的值時,值為30

a[1]=20;a[2]=30;

p=&a[1]//指向a1

c=*p++;//執行*p++時,它的值c應該是20,此語句執行完成後,p批向a2

d=*p;//已經指向a2,所以d的值為30

而第二題來說,可以分成這兩步:printf("%d",*p); p++

所以它在執行時,1肯定也是被執行的。因為第一次執行printf語句時,p是指向a的

2樓:

我覺得這樣的問題就是為難初學者,看多了就明白了先搜一下運算子的優先順序  * 小於++ ,所以p++ 指向了a[2]自增自減 運算子 有乙個規律   先執行後運算先直線printf("%d",*p) 然後運輸p++;

你可以搞乙個簡單的 例如 j=0;

printf("%d",j++);也就明白了先執行後運算這句話了.

3樓:風火輪

如果單獨一句 *p++; 那麼確實*p的值變成30。

但是for迴圈裡的printf()中的*p++,它的預設操作是先取*p的值,執行完printf("%d",*p); 再執行p++;

c語言 指標運算子和指標說明符有什麼區別

4樓:金色潛鳥

指標運算子和指標說明符 外形上一樣,都是 * 號, 乙個用在 語句裡,乙個用在宣告裡。

例如:int *p; 宣告 p 是指標,它可用來指向乙個 整形變數。

int (*pf)(); 宣告pf是乙個指向函式入口的指標變數,該函式的返回值(函式值)是整型。

int *ap(int x,int y) 宣告 函式 ap, 有2個形參,函式呼叫會返回 乙個指標,用來指向乙個 整形變數。

指標運算子,也在其運算元的左邊,該運算元是一位址,用*可取得該位址處儲存的變數的值,可做右值,也可做左值。例如:

int myage;

int *p; //指標說明符

*(&myage)=24; // 指標運算子,&myage 是位址,* 是取那個位址裡的值的運算,做左值

printf("%d",myage);

p=&myage;

printf(" %d",*p+1); //指標運算子, 輸出 指標指向的變數的值加1,做右值。

輸出 24 25

c語言中 「*」運算子的作用是 所謂「指標」就是

5樓:人設不能崩無限

用作乘法,為百雙目運算子,形式為a*b, 就是計算數學中的度a乘以b。用作取值運算,為單目運知算符,根據後續運算元(必須為指標)型別,取其指向的值。道

所謂的指標,本質上就是位址。 指標變數的值,就是位址的值,當取值運算時內就是到對應的記憶體位址上,依照指標型別進容行取值。

運算所需變數為乙個的運算子叫單目運算子,例如【!,~,()】 。

運算所需變數為三個的運算子叫三目運算子:【?:】

6樓:匿名使用者

*運算在c語言中,有兩種作用:

1 用作乘法,為雙目運算子,形式為a*b, 就是計算數學中的a乘以b。

2 用作取值運算,為單目運算子,根據後續運算元(必須為指標)型別,取其指向的值。

所謂的指標,本質上就是位址。 指標變數的值,就是位址的值,當取值運算時就是到對應的記憶體位址上,依照指標型別進行取值。

7樓:匿名使用者

&是取位址運算 對任意變數都可以進行取位址操作如:int i , *pi ;

pi=&i ;

int **ppi ;

ppi=&pi ;

*是取指標目標運算子 其後跟隨的必須是指標類變數如:int i,*pi ;

pi=&i ;

*pi = 10 ; //相當於 i=10 ;

*i=10; 這樣寫就是錯的,i不是指標類變數,所以 *i操作就是錯誤的語句。

8樓:小老鼠

*就是指標運算子; 注意區別 初始化時 int a;

int *p=&a ;

賦值時 int a,*p; p=&a;

*的作用是取位址裡的運算元; *p==a;

指標變數裡面就是整型的乙個十六進製制數,用來表示的就是指向某個變數的位址

9樓:匿名使用者

int a=10;

int *p=&a;

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

在定義部分的int *p=&a,表示p的型別是int *,也就是指向int型別的指標

printf語句中的*p,表示取出位址p中的值,也就是a的值,10

10樓:

int *p;

就是定義乙個整形的指標變數,它用於存放乙個整形變數(比如int i;)的記憶體位址,可以在其他函式裡通過記憶體位址呼叫i,而"*"運算子是從通過指標存放的位址讀取對應變數的值的

11樓:匿名使用者

*有兩種意思, 一是乘積,二是指標。當然後者又分兩種情況,一是宣告的時候表示這個變數是指標。 二是使用的時候表示取指標指向的物件。

所謂指標就是儲存記憶體位址的變數

12樓:勤嬌太叔以柳

程式設計中指標

在使用以後,靈活多用,可以取別名來取位址

而位址操作符

很繁瑣,每次必須使用引用的

變數就如同指路:指標相當於你用

地圖來指

取位址符相當於你不能用路名,不能用

門牌號碼

,不能用

參照物。

c語言中,指標和取位址運算子到底是什麼啊,能不能通俗一點講啊,謝謝

13樓:囚籠山人六

關於指標,統統都是在說記憶體的事情,記憶體就像乙個大樓,每個格仔都有乙個門牌號,也就是位址。取位址符的作用就是得到記憶體中某一段內容的門牌號,以供後面的需要。指標就是通過乙個門牌號找到這個內容,跟取位址是一對

c語言指標和運算子優先順序的問題

14樓:lost_覺悟

和()的優先順序是1,而*的優先順序是2,優先順序小的先處理,所以不加括號的*p[4],就等價於*(p[4]),所以先看p[4]這一部分,就類似a[4]表明這是乙個陣列,那麼*(p[4])就類似*(p),表明是乙個指標,由於先是陣列,那麼*(p[4])就是乙個以指標為元素的陣列,同理 (*p)[4],先是指標,再是陣列(注意1級運算子先左後右),那麼就是乙個指向陣列的指標

15樓:匿名使用者

[ ]優先順序比*的高,不加()時是先運算p[ ],它是陣列,然後運算*,才是指標,也就是 *(p[ ]),表示的是乙個指向陣列的指標;

而 ( *p ) [ ],先運算*,是指標,然後運算[ ],是陣列,也就是由多個指標構成的指標陣列。

16樓:唐道紅

()的優先順序 高啊。所以表示*p有四個整數型別的元素

c語言中指標就是位址,那&運算子也是位址,這話說的對嗎?

17樓:匿名使用者

對!嚴格說起來,應該這麼講:指標存的是位址,而&運算子是取變數的位址。

指標原理是這樣的:其實計算機中的記憶體就像乙個個抽屜(一兆記憶體就相當於1百萬個抽屜),每個抽屜都有乙個編號,用於存放資料。

為了方便使用,編譯器允許我們在寫程式的時候,對抽屜進行命名(而不是使用抽屜的編號),這就是變數名。就比如說我們在程式中定義:char c; 這個時候系統會幫我們找乙個空閒的抽屜(比方說編號為981的抽屜),命名為c,用於存放乙個字元變數。

以後我們在程式裡只要使用c這個變數,系統就知道是要對981這個抽屜裡的資料進行操作。

而指標是什麼呢?指標是我們申請乙個空抽屜,裡面不放資料,而放編號。比如我們申請乙個字元指標:

char *ch=&c; 這個時候,ch裡面放的是c這個變數的位址(也就是981),其中&是取址符,也就是取c這個變數的位址,而不是值。*ch才是ch指向的值。

18樓:每天生活有節奏

指標是你的名字,&運算子是你的身體,用指標就是喊你名字讓你自己或者別人頂著你的名號幹活。,別人忙去了,用位址就是你的身體頂著別人的名字去幹活

初學c語言,*是取指標目標運算子,&是取位址運算子,它們有什麼區別? 通俗一點 謝謝

19樓:萘僵牌腦

&是取位址

運算 對任意變數都可以進行取位址操作如是取指標目標運算子 其後跟隨的必須是指標類變數如相當於 i=10 ;*i=10; 這樣寫就是錯的,i不是指標類變數,所以 *i操作就是錯誤的語句。

初學c語言,*是取指標目標運算子,&是取位址運算子,它們有什麼區別? 通俗一點 謝謝

20樓:霜序

&僅僅是取得該變數的位址,*加在變數前就是指向該變數的指標可以通過變數位址獲取變數值。

初學c語言,*是取指標目標運算子,&是取位址運算子,它們有什麼區別? 通俗一點 謝謝

21樓:匿名使用者

&是取位址運算

copy 對任意變數都bai可以進行取位址操du作如:int i , *pi ;

pi=&i ;

int **ppi ;

ppi=&pi ;

*是取指標目標運算子 其後跟隨zhi的必dao須是指標類變數如:int i,*pi ;

pi=&i ;

*pi = 10 ; //相當於 i=10 ;

*i=10; 這樣寫就是錯的,i不是指標類變數,所以 *i操作就是錯誤的語句。

22樓:匿名使用者

這兩個運算bai符功能是du

互逆的比如現在有int型變zhi量a,a值是dao100,a在記憶體中內的位址是0x012fa7a6

* 就是給定位址求值,容

即已知0x012fa7a6,求出對應值100& 就是給定變數,求位址,即要得到對應a的位址

23樓:騰韻

例如你申請乙個變數,變數有他的值和他的儲存空間,*是根據變數儲存空間取出變數的值,如int *p = 4;*p就等於4,&是根據變數取出其儲存空間的位址,如 int p = 4,&p就是p所在的空間

C語言中指標陣列的問題,c語言關於指標陣列的問題?

這樣看 0x00 0x78,0x99 0x78 h e l l 0 0 0x99 w o r l d 0 其中s就是0x00,然後,s 0 就是 0x00 0 0x00 取內容,得到的值是0x78,然後列印的就是hello s,就是相當於s 0 s 1,因為優先順序關係,先執行s 0 就是 0x78...

關於c語言陣列和指標的問題,關於C語言陣列和指標的乙個問題

c 語言裡 1 形式邏輯不成立。2 要分清 乙個形式 出現在 宣告裡,還是 出現在語句裡,3 另外,字元變數 與 普通變數 有些 不同。下面只談字元 宣告 char s 10 hello s 是 陣列,初始化 hello 0 自動加 0 宣告 char p p 是 指標。宣告 char p s p ...

C語言的指標陣列的問題

char p1,p2,p3 這是定義了三個指標變數,沒有被初始化。char p 3 是定義了乙個包含三個指標 p 0 p 1 p 2 的陣列,同時你努力地用三個未初始化的變數把它初始化了。警告!但只是警告,所以你可以頭破血流地去使用它。此時,你擁有包含陣列中的不務正業的三個野指標,總共六個指標了。p...

C語言字元陣列的指標問題,C語言字串指標問題

這個就是看你對指標的理解了 char name 相當於你定義了乙個char 的指標陣列,每個陣列元素指向乙個字串。char name 表示你定義了乙個字元陣列,而你初始化的時候,確實字串,肯定編譯不過的。是不是二維陣列,就看你怎麼理解了,char name 中的name相當於char char na...

C語言中陣列和指標的問題

呵呵,你這個問題提重複了。我的回答也給你重複貼一遍。a a a 0 都是乙個值,指向首位址。p1是取指標p1的位址,不是p1內容的位址。p1 p2相等,但是 p1 不等於p2。p3 與 陣列a沒關係,但是因為a 4 正好索引到陣列a最後乙個成員的下乙個位址,因此正好是p1的位址。這段解釋比較麻煩,畫...