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的位址。這段解釋比較麻煩,畫...