C 基礎問題。生成物件A a和A a有什麼區別。還有A寫與不寫有什麼區別

時間 2021-08-30 10:37:16

1樓:

a a();這個被編譯器看成了乙個函式宣告,返回型別為a沒有引數的函式

正確的無引數構造物件,就是a a;沒有括號!

建構函式a(){}是乙個無參建構函式

若乙個類沒有什麼建構函式,則編譯器預設生成乙個空的無參建構函式,但若有建構函式,編譯器則不會自動生成,這時候如果需要無參建構函式,你可以自己寫乙個無參建構函式。

2樓:匿名使用者

a a(); 和 a a; 是一樣的,都是建立a類物件,呼叫a類建構函式a()

寫a(){} 表示定義了a類無參建構函式,如果沒定義,則呼叫預設建構函式,在這類裡面有無是一樣的

3樓:貓不愛的蟲子

1、沒有區別

2、如果a(){}不寫,並且你有其他的帶引數的建構函式,就會沒有預設的無參建構函式,就是你無法寫a a();或者a a;這種**。只可以去調你已經有的建構函式。但是如果沒有其他的建構函式,編譯器會預設生成乙個a(){} 。

4樓:懸壺濟公

這裡涉及的是建構函式的重構問題,重構使用於引數不同,估計樓主在這方面用得比較少,這個a (){}是一種無參的構造方法,相對於a(int i){}的有參構造方法,重構的優點是使得**重用性更強,如果在傳參的方面弄多了,**的優越就會出現了。

c++ * a和*&a作為函式的引數時有什麼區別

5樓:

如果你說的是函式的形參,那麼

void foo(int* ptr);

是傳值呼叫,比如你這麼呼叫

int a;

int* pvalue = &a;

foo(pvalue);…

*p=&a,*p=a和p=&a各是什麼意思,有什麼區別?

6樓:匿名使用者

表示式的意思:

1、*p=a的意思:將a的值賦給p指標指向的位址的值;

2、p=&a的意思是:將a的位址賦給指標p;

3、*p=&a的用法錯誤。

區別在於:

p=&a就是用a的位址對p賦值,a是乙個變數,&a就是儲存這個變數的記憶體位址,指標儲存的就是乙個位址,*p就是這一位址中的內容。

擴充套件資料另類*和&

兩個地方要注意: 在程式宣告變數的時候的*,只是表明「它是乙個無符號整數,這個整數指向某個記憶體位址,一次訪問sizeof(type)長度」。這點不要和(*)操作符混淆;

在c++程式宣告變數的時候的&,只是表明「它是乙個引用,這個引用宣告時不開闢新空間,它在記憶體分配表加入新的一行,該行記憶體位址等於和呼叫時傳入的對應引數記憶體位址」。

這點不要和(*)宣告符,(&)操作符混淆。

7樓:匿名使用者

1.一般來說*p=&a的表示方法是錯的,*p=a和p=&a是正確的。

2.*p=a的意思:將a的值賦給p指標指向的位址的值;

3.p=&a的意思是:將a的位址賦給指標p;

4.區別:*p是乙個值;p是乙個位址;兩者完全不相同。

5.*代表著p指向的位址的值,簡單來說就是取值;&是取位址符號,取的是位址;p是指標,可以理解為所指向的值的位址,*p就是取p指標指向的位址的值,&a就是取a的位址。

8樓:匿名使用者

*是解引用運算子 &是取位址運算子

9樓:小小小子

int *p=&a;

和int *p;pa=&a;等價

這裡的*是乙個指標說明符,不是間接定址運算子,我剛好看到這一點分享一下,前面幾個人都說這種是錯誤的,估計理解錯了吧

10樓:千古1帝劉公嗣

直接看**執行結果就

清楚了。

#include

int main()

11樓:匿名使用者

這個問題如下所述:

int b=5;a=10;// 定義變數a,並賦值為10;b=5

int *p=&b; //定義指標變數p,並且讓指標p指向變數b,其中 & 為

//取位址運算子

*p=a; //是將a的值就是10存放到指標p指向的變數b,這樣b的值不再是

// b=5,而是變成b=10

p=&a;// 這句是改變p 的指向,讓p指向變數a。例如還有下面的語句

*p=123; //那麼這樣後就會有p指向的變數的值為123.此處是a=123.

12樓:匿名使用者

& 取位址符 值相當與指標

* 取對應位址字元 型別與該位址所儲存的變數型別一樣

13樓:匿名使用者

*p=a是p取a值

而p=&a是取a 的記憶體位址

14樓:匿名使用者

第乙個&是指引用吧,*p=&a意思是p所指的值為a的引用

c++中 int a=0;與int a(0);都可以對a進行初始化,這兩種方式有沒有什麼區別

15樓:匿名使用者

對於這種內建型別(如int float之類的)是沒有區別的,但是如果是物件時候是有很大區別的,

乙個呼叫拷貝建構函式,乙個是直接初始化

16樓:匿名使用者

沒有區別,只是風格不同,前者傳統風格,後者物件導向風格。

c++ 中a.b和a—>b的區別

17樓:匿名使用者

a.b好像是類名訪問成員函式或變數,a是型別名

a->b,a是指向類的指標,效果一樣。其他我不知道還有什麼用處。

18樓:匿名使用者

p-> 等價於(*p).

->是用於指標的,是解引用和.操作符的結合。

. 就是對一般物件使用的

19樓:匿名使用者

a是類或者結構變數

a是類或者結構指標

20樓:匿名使用者

a.b a是類物件

a->b a是類指標

21樓:匿名使用者

隨便找本c語言的書都有這樣的解答,何必來網上問呢?

真可悲啊!

c++中a!=0與a=!0有什麼區別

22樓:匿名使用者

兩回事a != 0 表示 a 不等 0,結果是乙個變數,可能是真,也可能是假,取決於 a 究竟是否等於0,換一種表達方式為 a == true

而 a = !0 表示首先對零求反,然後再將值賦予變數a。對零求反結果就是真,這個結果可不再是變數了,相當於 a = true。

兩個表示式乙個用於測試 a 的內容,乙個用於給a賦真值,意義差別大了去了。

23樓:

a!=0——!=是關係運算子,所以a!=0關係表示式,意思是把變數a的值與0比較一下看是否不等。

=!——沒有這個操作符,所以編譯器解釋為=和!兩操作符:

=是賦值運算子,將它右邊的值賦給它左邊的變數;!是單目邏輯非運算子,!0的結果是1,而非0變數x的!

x為0。所以a=!0就被解釋為把1賦給變數a的意思。

供參考……

24樓:聽不清啊

a!=0

是判斷a是否不等於0,若是,表示式的值為真,否則為假。

a=!0

它就是乙個賦值語句,完全等價於a=1;

25樓:

對於 a != 0,只要a不等於0,表示式均會成立,即返回1。

對於 a = !0 等價於 a = 1,即為乙個賦值表示式。

26樓:匿名使用者

a!=0是判斷, 當a為0時表示式為假, 否則為真。

a=!0是賦值,這個是兩個操作

先!0 也就是邏輯非,結果為1.

然後a=1 將a賦值為1 。

27樓:匿名使用者

!= 這是乙個完整的符號不要把!和=拆開來解讀,!=這是不等於比較運算子與==相反。

!單獨使用時為取非,運算元為非零時取零,為零時取非零。

=是賦值運算子,用於將右測值給左測變數賦值由上面的說明可以得出,a!=0是乙個比較表示式,意思是變數a不等於數字0,而a=!0意思是將!0即對0取非,結果是1,將1賦值給變數a

28樓:匿名使用者

a!=0//判定a是否是不等於0的,如果a不等於0,表示式結果為true,如果a等於0,則表示式結果為false,但無論如何a的值不變;

a=!0//先對0取否定,理論上是得到乙個非0的數值(應該取決於編譯器吧,c語言中一般是1,具體你可以測試),然後將那個數值賦值給a。

29樓:匿名使用者

!= 是乙個符號,判斷左右兩個數,是否不相等,不相等則整個表示式返回true.

a=!0 其中 =是個賦值號,將右邊的值賦左邊。而!

是個取反符號。將右邊表示式(在你這裡是0)的邏輯結果取反。0的邏輯結果是false, 那麼取反就是true.

所以整個表示式的意思就是把true賦值給a. 如果a不是乙個bool型別,那麼就是把1賦值給a.

30樓:crazy_小豬

a!=0:表示判斷,即:a不等於0,執行完該語句,a的值是不變的。

a=!0:表示賦值,即:a等於非0,執行完該語句,a的值變了。

31樓:龍之聲闖天涯

a!=0是a≠0,用在if,while中,判斷條件。

a=!0,在c++中,bool變數型別和int型別是互通的,int>0,bool為true,等於0時,為false。a=!

0,就是把為false的0,取反後變為true,賦值給a。

答得不好,請見諒。

32樓:匿名使用者

a!=0是乙個判斷語句,若a的值不為0則結果為1(真);

a=!0是乙個賦值語句,將a賦值為非「假」(0),即同義於a=1。

望採納。

33樓:匿名使用者

a!=0 是判斷 變數a,不等於0

a=!0 是判斷 變數a 等於非零

是完成不同的語句。

34樓:匿名使用者

a!=0,表示a不等於0,一般用於判斷的條件,比如if(a!=0) ;

a=!0,表示a等於非零,即a=0,是乙個賦值語句。

當然第二個如果寫成a==!0,跟第一句沒什麼區別了,用於判斷條件,但習慣上還是用第乙個

35樓:匿名使用者

a!=0是判斷語句 !=是判斷符,意思為a不等於0,加上if(a!=0) 就是當a不等於0時...

a=!0是賦值語句 解釋為 a等於非0,.

36樓:polaris北斗

a != 0 關係運算,乙個運算子是 !=, 判斷 a 是否不等於0

a = !0 賦值和邏輯運算,邏輯運算子!取0(false)即!0 的結果為1(true),然後賦值(=)給變數a

37樓:匿名使用者

a!=0 : != 表示不等於, 此段代表判斷a是否不等於0

a=!0 : ! 表示邏輯非,0的邏輯值為假,!0就為真, 此段代表把邏輯真(1)賦值給a

38樓:匿名使用者

第乙個是判斷a是不是等於0,一般用在if語句 if(a!=0)

第二個是給a賦乙個非0值

39樓:匿名使用者

!=是不等於號,=!是賦值非。。。的意思。前者是乙個關係運算子,返回值為真或假;後者為賦值語句,a為1.

40樓:聖吻之櫺

左結合!!

!! != 標識不等於的意思 a=!

0 是 !和0結合 !0 的意思是 邏輯非運算!!!

邏輯運算產生的結果只有ture和false !0 就是 true!!!轉int 就是1!

41樓:匿名使用者

a != 0 表示 a 不等於 0,用來判斷這個表示式是否成立,即真、假

a = !0 表示給 a 賦值,即 a 的值為 1, 不是下面說的a = 0。

42樓:匿名使用者

a!=0就是字面的意思,很好理解,

a=!0 其實就是a=1, 如果是用在if的條件裡,就是用錯了,條件總為真

C語言的基礎概念問題,關於c語言的基礎問題

二元運算 由兩個元素形成第三個元素的一種規則。例如數的加法及乘法 更一般地,由兩個集合形成第三個集合的產生方法,或構成規則,稱為二元運算。從二元運算的定義可以看出,賦值不是由兩個元素形成第三個元素,所以賦值運算子不是二元運算子。二元運算子 二元運算子是寫在執行運算的子表示式對之間的運算子。是運算子,...

c語言基礎問題

1.自加,自減運算表示式,在 全國計算機等級考試二級教程 c語言程式設計 教育部考試中心編寫,高等教育出版社出版 中,認定其實質是賦值運算。自己可以預設表示式前面有乙個未知數x 即x k x k x可以是k本身 2.自加,自減運算子,1 如果是變數的字尾,則該表示式值不變,即為原變數的值,而變數的值...

C語言基礎問題

scanf是給某個位址賦值 對於陣列,它的首位址,和他的名字,都是同乙個位址,因為陣列都是線性儲存的,都是連著的,只有直接往後面儲存就行了 如果是 s 後面就是陣列名,因為只要第乙個位址,其他依次自動 就行了對於某個元素,比如 a 6 因為不知道是哪個位址,必須加上 例如 char str 5 陣列...