C++中關於int *p和 int* p的區別?
根據C++Primer介紹:
對於int* p(這種寫法合法,但是容易造成誤導),其基本資料型別是int,後面的*其實是宣告符。在一組公用的資料型別後面可以使用不同的宣告符。例如: int i =1024, *p = &i, &r = i; //i是一個int型別的資料,p是一個int型的指標,r是一個int型引用。
對於int *p,其和int* p 的含義一樣,都表示int型別的指標變數p。
但是將宣告符緊跟著變數名是一種更容易理解的做法。否則可能會出現誤導現象:
例如 int* p1, p2;表示含義是p1是一個int型的指標,p2是一個int型變數。而不是p1,p2都是指標變數,它們共用的是基本資料型別部分。
如果寫成int *p1,p2;則和上式表示的含義完全一樣,但是更加清晰,不會造成誤導。
不過對於以上兩種寫法的使用,主要看個人的習慣,但是最好不要混用。
相關推薦
C#中的is和as操作符區別小結
devel 獲取 d3d 數據 bottom 技術 datagrid idv center 1. is 是驗證操作對象是不是自己希望的 運算公式:對象 is 類型 返回true:對象是指定類型 返回false:對象不是指定類型 2. as 是將對象轉換成指定類型
關於C++中的繼承和過載的區別
C++中的很多特性光從概念上的話,很難做區分。或者說,概念讓人容易模糊,比如說函式過載和函式繼承。 先說過載,過載分為操作符過載和函式名過載,其中,操作符過載就是對運算操作符的原有功能進
《隨筆二十》—— C++中的“ delete 和 delete [] 的區別”
c++中對new申請的記憶體的釋放方式有delete和delete[]兩種方式,到底這兩者有什麼區別呢? 1.我們通常從教科書上看到這樣的說明: delete 釋放new分配的單個物件指標指向的記憶體 delete[] 釋放new分配的物件陣列指標指向的記
[轉載]C++中的struct和class的區別
C++中的struct對C中的struct進行了擴充,它已經不再只是一個包含不同資料型別的資料結構了,它已經獲取了太多的功能。 struct能包含成員函式嗎? 能! struct能繼承嗎? 能!! struct能實現多型嗎? 能!!! 既然這些它都能實現,那它和clas
C#中結構體和類的區別
結構體和類同樣能夠定義欄位,方法和建構函式,都能例項化物件,這樣看來結構體和類的功能好像是一樣的了,但是他們在資料的儲存上是不一樣的C#結構體和類的區別問題:這兩種資料型別的本質區別主要是各自指向的記憶體位置不同。傳遞類的時候,主要表現為是否同時改變了源物件。1.結構體是值型
【知識積累】C#中結構體和類的區別
【類】 類是對現實生活中一類具有共同特徵的事物的抽象。類的實質是一種資料型別,類似於int、char等基本型別,不同的是它是一種複雜的資料型別。因為它的本質是型別,而不是資料,所以不存
在c++中關於堆和堆疊的區別
從以往我們接觸c++這門語言開始就知道有堆和棧,棧我們一直稱之為堆疊,剛開始是個小白的時候就一直不明白堆疊到底是堆還是棧。 在C++中,記憶體分成5個區,他們分別是堆、棧、自由儲存區、全域性/靜態儲存區和常量儲存區。 棧,就是那些由編譯器在需要的時候
C++中Public Static和Private Static區別
Static: 靜態成員的關鍵字,表示不能例項化,在你執行的時候他自己已經在記憶體中開闢了塊空間,所以不用new, 可以直接呼叫。類似全域性變數。 特點: 1、訪問static成員,用類而不是例項化的物件; 2、static方法只能訪問static屬性;&nb
C++中引用型別和指標型別區別
引用型別和指標型別區別 引用型別是C++11引入的複合型別,所以C語言並沒有引用型別。 一般在初始化變數時,初始值會被拷貝到新建的物件中。然而在定義引用時,程式把引用和它的初值繫結在一起,而不是將初值拷貝給引用。一旦初始化完成,引用將它的初始值物件繫結在一起。因為
C++中iostream.h和iostream的區別
#include <iostream.h>非標準輸入輸出流 #include <iostream>標準輸入輸出流 C++中為了避免名字定義衝突,特別引入了“名字空間的定義”,即namespace。 1,當代碼中用<iostre
C#中 Flush Dispose和Close的區別!
【個人學習過程記錄,不一定準確】 你寫了一個程式,其中要對硬碟上的一個檔案操作,FileStream fs = new FileStream(fileName)這樣就是建立了一個檔案緩衝流,換句話的意思就是說你通過這條程式,計算機給了一一塊記憶體空間,但是呢這塊記憶體空
學習一下C#中常用集合和陣列的區別,雖然很基礎,但感覺很實用
在C#中,當我們想要儲存一組物件的時候,就會想到用陣列,ArrayList,List這三個物件了。那麼這三者到底有什麼樣的區別呢?我們先來了解一下陣列,因為陣列在C#中是最早出現的。 陣列 陣列有很多的優點,比如說陣列在記憶體中是連續儲存的,所以它的索引速度是非常的快,而且
C#中索引器和屬性的區別
索引器允許類或者結構的例項按照與陣列相同的方式進行索引取值,索引器與屬性類似,不同的是索引器的訪問是帶參的。索引器和陣列比較:(1)索引器的索引值(Index)型別不受限制(2)索引器允許過載(3)索引器不是一個變數索引器和屬性的不同點(1)屬性以名稱來標識,索引器以函式形式
C#中抽象類和介面的區別
大家都容易把這兩者搞混,我也一樣,在聽李建忠老師的設計模式時,他也老把抽象類說成介面,弄的我就更糊塗了,所以找了些網上的資料. 一、抽象類: 抽象類是特殊的類,只是不能被例項化;除此以外,具有類的其他特性;重要的是抽象類可以包括抽象方法,這是普通類所不能的。抽象方法只能聲明於抽象類中,且不包含任何
C++中關於int *p和 int* p的區別?
根據C++Primer介紹: 對於int* p(這種寫法合法,但是容易造成誤導),其基本資料型別是int,後面的*其實是宣告符。在一組公用的資料型別後面可以使用不同的宣告符。例如: int i =10
c++中int,和char的區別和特性。
雖然談不上十分難懂或者十分重要,但是希望大家可以全面瞭解一下關於int 和char。 下面是轉載文章: 1.int型別和char型別的區別 比較下面三個定義式的區別: int i = 1; char i = 1; char i = ‘1’; int用來定義整型變數,char用來定義字元型變數
C#中 Convert.ToInt32、int.TryParse、(int)和int.Parse四者的區別
Convert.ToInt32 適合將object型別轉換成int型別,如Convert.ToInt32(session["shuzi"]); (int)適合簡單資料型別之間的轉換; int.Parse適合將string型別轉換成int型別,如int.Pars
int *const p和 int const *p 的區別
對於int *const p; const 限定的是p所指的物件,所以p指標所指的地址在這個情況下是不能改變的 對於 int const *p; const限定的是*p,所以*p所 指的值是不可以改變的,但是可以改變p所指的物件 更多的列子如下: const i
C#中Convert.ToInt32、int.TryParse、(int)和int.Parse四者的區別
Convert.ToInt32、(int)和int.Parse三者的區別: 首先:Convert.ToInt32 適合將object類型別轉換成int型別,如Convert.ToInt32(session["shuzi"]); (int)適合簡單資料型別之間的轉換;  
C#中二維陣列int[,]與交叉陣列int[][]的區別
首先說一下交叉陣列這個東西是C#裡面的,c++裡面是沒有的交叉陣列這個定義的 int[][] 是陣列的陣列,即一個一維陣列的每個元素都是一個數組,這個在C++,java等語言裡面也是這麼定義的; int[,]這個是C#中提供的一個二維陣列的形式,在C++中並不存在