C 指標變數不能使用 運算子嗎

2022-08-01 06:56:47 字數 4131 閱讀 7030

1樓:匿名使用者

new int;//開闢一個存放整數的儲存空間,返回一個指向該儲存空間的地址(即指標)

new int(100);//開闢一個存放整數的空間,並指定該整數的初值為100,返回一個指向該儲存空間的地址

new char[10];//開闢一個存放字元陣列(包括10個元素)的空間,返回首元素的地址

new int[5][4];//開闢一個存放二維整型陣列(大小為5*4)的空間,返回首元素的地址

float *p=new float (3.14159);//開闢一個存放單精度數的空間,並指定該實數的初值為//3.14159,將返回的該空間的地址賦給指標變數p

new運算子使用的一般格式為   new 型別 [初值]   用new分配陣列空間時不能指定初值。如果由於記憶體不足等原因而無法正常分配空間,則new會返回一個空指標null,使用者可以根據該指標的值判斷分配空間是否成功。

delete運算子使用的一般格式為   delete [ ] 指標變數

例如要撤銷上面用new開闢的存放單精度數的空間(上面第5個例子),應該用   delete p;

前面用「new char[10];」開闢的字元陣列空間,如果把new返回的指標賦給了指標變數pt,則應該用以下形式的delete運算子撤銷該空間:

delete pt;//在指標變數前面加一對方括號,表示是對陣列空間的操作

例 開闢空間以存放一個結構體變數。

#include

#include

using namespace std;

struct student //宣告結構體型別student

;int main( )

執行結果為   wang fun 10123 m

2樓:司馬刀劍

普通指標可以進行++、--運算,常指標不行,指向函式的指標也不行。如有:int a[10],*p=a;,則p++、++p、p--、--p都是合法的,而a++、++a、a--、--a不行,因為a是陣列名,是常指標;被const修飾的常指標也不能進行++、--運算,如有int x,*const q=&x;,則q也不能再指向別處,q++、++q、q--、--q都是

3樓:匿名使用者

應該是優先權問題, "*"的優先權, 要比後置"++", 來得低. 所以++先跑, 才做*. 導致讀錯位置.

所以可以考慮用 (*p_updates)++;來取代

4樓:匿名使用者

型別相同的兩個指標變數不能進行加法運算,但能進行減法運算。還能用『<』、『>』、『==』這三個運算子進行比較,主要用於判斷指標指向陣列元素的先後位置。

5樓:專屬暱稱

運算子的優先順序導致

*p_updates+1 ==>取地址中的值來加1

*p_updates++ ==>地址加1後的值

6樓:匿名使用者

it should be (*pa)++.

int a = 10;

int *pa = &a;

(*pa)++;

std::cout<< a << " "<< &a << std::endl;

std::cout<< *pa <<" "<< pa << std::endl;

7樓:qq洺

能使用++運算子,幫你。

c++中使用指標的.和->運算子的區別

8樓:日晞

一般,結構體和類中,對於非結構指標例項用"."(下面的pt),而指標型的結構體例項用"->"(下面的*p)。

舉例子來說:

struct point

;void main()

這是結構體的,類也是一樣的。

9樓:溜達大師

都一樣吧 不過 老師說 指標最好用->

10樓:匿名使用者

.直接地址

-> 間接地址

最常用的在結構體.

struct _aaa

aaa;

main()

請問c++中&作為引用運算子和*作為指標運算子可以過載嗎?

11樓:匿名使用者

其實能不能過載已經沒什麼必要,&、*都有變數、函式等的應用,對於解決現實中的

大多數問題已經綽綽有餘,但是據我所知.*是不能被過載的

12樓:匿名使用者

'.', '::', '.*', '.->' , '? :'只有這五種運算子是不能過載.

c++語言中什麼運算子不能過載

13樓:小丁創業

c++中絕大bai部分的運算子du允許過載zhi。

不能過載的運算子dao只有5個:

(1)回. (成員訪問運答算符)。

(2).* (成員指標訪問運算子)。

(3)∷(域運算子)。

(4)sizeof(長度運算子)。

(5)?: (條件運算子)。

14樓:匿名使用者

c++中絕大部分的運算子允許過載。

不能過載的運算子只有5個:

. (成員內訪問容

運算子)

.* (成員指標訪問運算子)

∷ (域運算子)

sizeof (長度運算子)

?: (條件運算子)

15樓:匿名使用者

過載抄操作符的限制:

1 並不是所有的

襲操作符都能被過載。除了. ,.* ,:: ,? : ,sizeof,typeid這幾個運算子不能被過載,其他運算子都能被過載

2 過載不能改變該運算子用於內建型別時的函義,程式設計師不能改變運算子+用於兩個int型時的含義。

3 運算子函式的引數至少有一個必須是類的物件或者類的物件的引用。這種規定可以防止程式設計師運用運算子改變內建型別的函義。

4 過載不能改變運算子的優先順序。

5 過載不能改變運算子的結合律。

6 過載不能改變運算子運算元的個數。比如+需要兩個運算元,則過載的+也必須要有兩個運算元。

16樓:匿名使用者

幾乎全部可以. 不可以的只有4個

:: 作用域操作符

. 點號, 即成員訪問操作符

? : 邏輯操作符

.* 這個一下還真想不起來叫什麼

17樓:苦孩子

有五個. .* :: ?:: sizeof

18樓:匿名使用者

「.」、「::」、「?:」和「sizeof」

c++中成員運算子(.)為什麼有時候能呼叫方法函式,有時不能呼叫,請問是什麼原因啊?

19樓:匿名使用者

,我當然會推薦我覺得最好的寫法

你可以忽略我的程式。

只要你先宣告過operator +() 就可以使用過載後的加法通常我們會這樣宣告過載就是為了防止對c=a+b運算時改變a和b的值

當然你可以這麼做:

20樓:

呼叫指標的成員用->,而變數的成員用。你需要先看看你的程式分清是呼叫變數的方法函式還是指標的方法函式

21樓:匿名使用者

因為有時候寫對了有時候沒寫對

22樓:justfor_曉

我也遇到同樣的問題,在開頭定義一個類,類中宣告瞭一個建構函式,之後再成員運算子,就呼叫不出來...

c++語言中什麼運算子不可以用作浮點數

23樓:匿名使用者

求餘數% 和%=

下標所有的位運算子:& | ^ ~ << >>,還有&= | = ^= <<= >>=

C運算子過載為什麼流運算子不能過載為成員函式

class object如果實現了成員operator 呼叫其物件格式o 載運算子為成員函式後,當呼叫該運算子時,左運算元必須是該類的例項。友元函式 流引數定義第一個引數.才能呼叫cout 雖然不能 過載 為成員函式,但是可以定義為新的成員函式,只不過使用習慣和常例不符而已。試想一下這一點 將我們的...

運算子》和》有什麼區別,C 中 運算子和 運算子有什麼區別

表示是帶符號的右移 按照二進位制把數字右移指定數位,符號位為正補零,符號位負補一,低位直接移除。表示無符號的右移 按照二進位制把數字右移指定數位,高位直接補零,低位移除。區別 在傳遞時也把符號一起傳遞,比如 3 2在傳遞再傳出時依然是 3 2,而使用 時就會統一變為3 2。帶符號於無符號的差別就在此...

關於c運算子優先順序和的,C中運算子優先順序的問題

a和a 含義不同啊,a 表明先執行後加減,所以還是從0開始的。c 中運算子優先順序的問題 假定陣列是 int y 指標是 int symbol y int x 222 語句 symbol x 因為是字尾 表示式裡不自增,故計算分2步走,版1 1 symbol x 1 2 symbol symbol ...