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

時間 2022-03-23 16:11:12

1樓:匿名使用者

指標運算子是「c/c++」中的說法。在c/c++中有兩個關於指標的運算子:

&運算子:取位址運算子,&m即是變數m在記憶體中的實際位址。

*運算子:指標運算子 (通常稱為間接引用運算子:indirection operator或復引用運算子:

dereferencing operator),它返回其運算元(即乙個指標)所指向的物件的值。

例:main()

printf("%d,%d\n",a,b);

}在程式中,當執行賦值操作p1=&a和p2=&b後,指標實實在在地指向了變數a與b,這時引用指標*p1與*p2,就代表了變數a與b。

執行程式:

run3,44,3

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

2樓:金色潛鳥

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

例如: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語言中 「*」運算子的作用是 所謂「指標」就是

3樓:人設不能崩無限

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

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

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

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

4樓:匿名使用者

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

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

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

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

5樓:匿名使用者

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

pi=&i ;

int **ppi ;

ppi=&pi ;

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

pi=&i ;

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

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

6樓:小老鼠

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

int *p=&a ;

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

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

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

7樓:匿名使用者

int a=10;

int *p=&a;

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

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

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

8樓:

int *p;

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

9樓:匿名使用者

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

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

10樓:勤嬌太叔以柳

程式設計中指標

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

而位址操作符

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

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

地圖來指

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

門牌號碼

,不能用

參照物。

c語言中什麼是間址運算子?什麼是指標說明符?最好有例子,急 啊

11樓:匿名使用者

1、&運算子:取位址運算子,&m即是變數m在記憶體中的實際位址。

2、*運算子:指標運算子 (通常稱為間接引用運算子:indirection operator

例程:指標:

int i = 10;

int *p = &i;

要想改變i的值就寫*p = 5;

還以改變p指向的變數如p = p + 1;

引用:int i = 10;

int &p = i;

要想改變i的值就寫p = 5;

這裡寫p = p + 1;就把i加1了

12樓:匿名使用者

int x=5, y, *p=&x; /* 這裡的*為指標說明符 */

y=*p; /* 這裡的*為間址運算子 */

13樓:劉明

&則為取位址符號,指標說明則為宣告指標

14樓:圭若谷望雲

指標運算子和指標說明符

外形上一樣,都是*號,

乙個用在

語句裡,乙個用在宣告裡。

例如:int

*p;宣告

p是指標,它可用來指向乙個

整形變數。

int(*pf)();

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

int*ap(int

x,int

y)宣告

函式ap,

有2個形參,函式呼叫會返回

乙個指標,用來指向乙個

整形變數。

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

intmyage;

int*p;

//指標說明符

*(&myage)=24;

//指標運算子,&myage

是位址,*

是取那個位址裡的值的運算,做左值

printf("%d",myage);

p=&myage;

printf("

%d",*p+1);

//指標運算子,

輸出指標指向的變數的值加1,做右值。

輸出2425

c語言中的箭頭運算子和點運算子有啥區別

15樓:匿名使用者

c語言有一種資料型別叫結構

體,其定義格式為:

struct 結構體名 ;

如:struct student ;

用結構體定義的變數叫結構體變數,如:

struct student stu; //定義乙個結構體變數stu這種變數在引用結構體成員時,使用點(.)來操作,如:

strcpy( stu.name, "zhangsan" );

stu.age=20;

stu.score=100;

結構體型別也可以定義指標變數,如:

struct student *pstu; //定義乙個結構體指標變數pstu

pstu=&stu ; //pstu指標指向stu結構體變數結構體指標變數在引用成員變數時,使用箭頭(->)來操作,如:

strcpy( pstu->name, "zhangsan" );

pstu->age=20;

pstu->score=100;

以上這兩種符號的使用是c語言的規定!

16樓:

箭頭是指標訪問成員變數的 點運算子是用於結構體變數訪問結構體成員變數的

也就是說:如果定義的結構變數是指標 那麼要訪問它的成員變數用箭頭

如果定義的是結構體變數的話就是用點

17樓:time便於記憶

簡單點說,要訪問結構體成員,如果是結構體指標,則用箭頭運算子訪問,如果是結構體變數,則用點運算子

18樓:匿名使用者

比如乙個結構體

struct node

;在main函式中

int main

19樓:匿名使用者

箭頭作用於結構指標,點作用於結構本身

c語言中指標運算子*和自增運算子++的優先順序

20樓:慶年工坊

c語言中自增運算子++作為字尾的話比指標運算子*的優先順序高,作為字首的話與指標運算子*平級。

c語言的運算子主要用於構成表示式,同乙個符號在不同的表示式中,其作用並不一致。下面按計算的優先順序,分別說明不同作用的表示式。需要特別指出,在c語言標準中,並沒有結合性的說法。

相同優先順序運算子,從左至右依次運算。注意字尾運算優先順序高於字首。因此++i++應解釋為++(i++)。

而與或非的運算優先順序都不一樣,因此a && b || b && c解釋為(a && b)|| (b && c)

合理使用優先順序可以極大簡化表示式。

基本表示式 1級

基本表示式(primary expressions),主要是用於運算子之間,做為運算數。

標識,常量,字串文字量,優先順序提公升表示式最優先執行。

優先順序提公升表示式是指圓括號包圍的表示式,如「( expression )」

字尾表示式 2級

postfix-expression [ expression ],陣列下標運算。

postfix-expression (argument-expression-list),函式呼叫,括號內的引數可選。

postfix-expression . identifier,成員訪問,

postfix-expression -> identifier,成員訪問,->號之前應為指標。

postfix-expression ++,字尾自增

postfix-expression --,字尾自減

( type-name )

( type-name ) 復合初始化,c99後新增。

單目/一元運算 3級

++ unary-expression 字首自增

-- unary-expression 字首自減

unary-operator cast-expression 單目轉型表式式, 包括 取位址& ,提領 * , 正號+ ,負號- 位反~ 邏輯否!。

sizeof unary-expression 求型別長度,對表示式求型別長度

sizeof ( type-name ) 求型別長度

強制型別表示式 4級

(type-name ) cast-expression,強制表示式成為type-name指定的型別。

乘法表示式 5級

「 * 」 乘法運算子;「 / 」除法運算子;「 % 」 取餘運算子。

加法運算子 6級

「 + 」加法運算子;「 - 」減法運算子。

移位運算子 7級

<< 左移運算子;>> 右移運算子。

關係運算子 8級

<、<=、>、>=關係運算子。

相等運算子 9級

「 == 」等於運算子;「 != 」不等於運算子。

位與運算子 10級

「 & 」按位與運算子

位異或運算子 11級

「 ∧ 」按位異或運算子(bitwiseexclusive or operator)。

位或運算子 12 級

「 | 」按位或運算子(bitwiseinclusive or operator)。

邏輯與運算子 13級

「&&」邏輯與運算子。

邏輯或運算子 14 級

「 || 」邏輯或運算子。

三元條件運算子 15級

? :條件運算子。

賦值運算子 16 級

=、 +=、 -=、 *=、 /=、 %=、 &=、 ^=、 |=、 <<=、 >>=賦值運算子。

逗號運算子 17級

「,」逗號運算子。

C語言的逗號運算子,C語言中逗號運算子怎麼用

是的,賦值運算的優先順序高於逗號運算子,所以先計算y x a b 再計算 b c 整個逗號表示式y x a b b c 的值為b c 然而並沒有卵用 沒有賦值 故 最後y x a b 你的理解是正確的。我估計是 程式漏了一對 小括號 y x a b b c 意思是把逗號 表示式的 值賦給y 這樣就有...

是什麼運算子,c語言中運算子「 」的作用是什麼?

百分號 是 求餘運算10 3 1 10 3 3 1 算術運算 arithmetic operators 符號,就是用來處理四則運算的符號,這是最簡單,也最常用的符號,尤其是數字的處理,幾乎都會使用到算術運算符號。算術運算子 含義 示例 1 加號 加法運算 3 3 2 減號 減法運算 3 1 負 1 ...

c 運算子過載怎麼理解,C 運算子過載是什麼意思

複數類complex a complex b a b實際呼叫的是 a 例項的方法operator 使用 b的引用作為引數 a.operator b 運算子過載是通過建立運算子函式實現的,運算子函式定義了過載的運算子將要進行的操作,所以運算子過載的實質就是函式過載。唯一區別是運算子函式的函式名是由關鍵...

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

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 中運算子什麼意思,C 中 運算子什麼意思

這個編譯器可能有些預設的數值 會不會是 cout a b c n 就是a是不是大於 空格字元的,如果大於,則等於b,此時的b已經等於8,否則a等於空格,你可嘗試寫成cout a 我按照你的程式敲了,編譯沒通過。我是覺得你這個程式有問題,根本就沒有那種運算子。你的 有問題吧!這應該是c 中的三目運算子...