陣列是由型別名、識別符號和維數所組成的復合資料型別。
int array[4] = ;
1.陣列的維數:必須是值大於等於1的常量表示式。
2.陣列的初始化:與c語言相同
3.陣列的賦值:不允許陣列之間的直接複製和賦值
string s("hello c++");
string *p = &s; // &是取位址符
tip:理解指標的宣告語句時,建議從右向左閱讀。
string *pstring;
/*該句把pstring定義為乙個指向string型別的指標變數*/
2. 儲存某個物件後面的另乙個物件 (不理解)
3. 0值,表示該指標不指向任何物件。(這個0值如果來自變數,那麼必須是const型別的變數)
warning:沒有初始化的指標變數是十分危險的。
一種特殊的指標型別,可以儲存任何型別物件的位址。但只支援幾種特定的操作,不允許通過void*型別的指標來操縱指向物件的值。
string s = "hello, c++";
string *p1 = &s;
void* p2 = &s; // right
陣列的陣列名為指向陣列第乙個元素的指標。
1.c++11強制要求指向const型別的物件的指標也具有const性質。
const double pi = 3.14;
double *p1 = pi; // error
const double *p2 = pi; //right
2.這裡的const指明的是指標cptr指向的物件為const,而非cptr本身為const。
const double *cptr; // cptr may point to a double that is const
3.cptr所指向的物件是可以改變的,但是不可以通過cptr來改變其指向的物件的值。
*cptr = 42; //error, cptr is a point to a const double
4.使用void*來儲存const物件的位址時,也必須使用const void*。
void *p1 = pi; // wrong
const void *p2 = pi; // right
5.關於第三點的重述,指向const物件的指標所指的物件的值並不一定是不可改變(好奇怪啊)。
int main()
/* ouput */
/*3.14
*/
int num = 0;
int *const p = #
這裡的p是指向int型別物件的const指標。
不可以改變const指標的值,但可以通過指標改變所指向的物件的值。
int main()
大量錯誤的**,在c語言書籍中有具體闡述,不再贅述。
c++使用new和delete表示式實現在自由儲存區中分配儲存空間。
只需指定陣列型別和維數,通過new返回新分配陣列的首位址。
int *p = new int[10]; // array of 10 uninitialized ints
類型別通過預設建構函式初始化,內建型別無初始化。
也可通過在後面加一對圓括號進行初始化。
int main()
/*output*//*0
*/
delete p;
int main()
; vectorvec(array, array + array_size);
for (vector::size_type i = 0; i < array_size; i++)
cout << vec[i] << endl;
return 0;
}/* output *//*0
1234
5*/
陣列和切片4
切片的遍歷和陣列一樣,也有兩種方式 1 for 迴圈常規方式遍歷 2 for range 結構遍歷切片 兩種方式都在下面的 裡 案例演示 func main slice arr 1 4 20,30,40 for i 0 i len slice i fmt.println 使用for range 方式...
4 陣列和方法(一)
一 一維陣列 陣列是同一型別的一組變數,陣列允許你通過同一名稱引用這一系列的變數,並使用乙個稱為 索引 或 下標 的數字來進行區分。陣列中包含的變數 又稱陣列的元素 具有相同的型別,該型別稱為陣列的元素型別。陣列的宣告 int number 一維陣列物件的建立 int number new int ...
C PRIMER之4 陣列和指標
1 陣列 陣列的維度必須為大於0的常量表示式 int a 3 函式體內的陣列,無初始化操作.函式體外的會初始化預設值.char b abc 會在後面新增乙個空字元.長度為4.不允許直接複製和賦值.長度是固定的.2 陣列操作 下標型別為size t 保護好避免越界 buffer overflow 3 ...