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 中的三目運算子...