注意⚠️:陣列名代表第乙個元素的位置,是乙個常量,對陣列名取位址的結果是陣列的型別。
char(*) [2] 是一種陣列型別,表示指向有兩個元素的陣列的陣列指標。
往char型別存入字串的話,在字串末尾加上
\0
作為終止符方便下次取用。如果結構體有元素是char*/char 型別,則在儲存值的同時,也要儲存長度。
陣列作為形參時會退化為指標,因此可以說c++中傳遞陣列永遠是傳遞陣列首元素的指標以及長度,後面用
memset
首先來看乙個`int`型的一維陣列:
int a[10] = ;
cout << &a[0] << endl; // 第乙個元素位置
cout << a << endl; // 陣列名等價於第乙個元素位置 型別是int*
cout << &a << endl; // 型別是整個陣列型別 型別是int(*)[10] (指向具有10個int元素的陣列的陣列指標)
其次是`char`型的一維陣列:
char b[10];
char* p = b; // 指向第乙個元素
cout << b << endl; // 會一直往後面輸出,直到遇到終止符號
cout << p << endl; // 同理
cout << &b << endl; // 陣列的型別是 char(*) [10]
char (*p)[10] = &b; //也可以這樣賦值
二維陣列 - 可以看作多個一維陣列
char a[b][c]
a[0]
是乙個一維陣列的陣列名,型別也就是char*
a
也就是首元素一維陣列的陣列名,型別是char (*)[c]
char a[3][2];
// 賦值操作
char (*p) [2] = a; // a是第一維陣列的陣列名
char *p = a[0]; // a[0]是第二維的陣列名(一維陣列)
char (*p)[3][2] = &a
// 另一種宣告陣列的方式
typedef int t[2];
t a[3]; //a的型別也就是 int (*)[2]
int a[3][2] = ;
cout << a << endl;
cout << &a[0] << endl;
cout << &a[0][0] << endl;
以上結果均為0x7ffeefbff420
。
三維陣列
char a[b][c][d]
首元素是具有c
個元素的一維陣列。
char a[3][2][2];
// 賦值操作
char *p = a[0][0]; // 一維陣列的陣列名
char (*p)[2] = a[0];
char (*p)[2][2] = a;
char (*p)[3][2][2] = &a;
// 另一種宣告陣列的方式
typedef int c[2]; // c的型別是int *
typedef c b[2]; // b的型別是int (*)[2]
c a[3]; // a的型別是int (*)[2][2]
sizeof
與算數運算
char a[10];
// a + 1 首位址 + sizeof(char)
// &a + 1 首位址 + sizeof(a)
// 不允許 a++ a是常量,不允許自增運算
// sizeof(a) 陣列的長度
// sizeof(&a) 第乙個指標變數的長度
//舉例
int a[10] = ;
cout << a << endl; // 0x7ffeefbff400
cout << &a + 1 << endl; // 0x7ffeefbff428 相差40個bytes 正好是a的陣列長度
參考:python 陣列公升維降維
一 numpy.array 增加維度 import numpy as np a np.array 1,2,3 print a 輸出array 1,2,3 print a none 輸出array 1,2,3 print a none 輸出array 1 2 3 二 複製填充並公升維 舉例 把a的sh...
C語言中陣列的公升維與降維
據了解,c語言的公升維與降維好像是乙個經常被提及的問題,彷彿通過測試面試者對這兩種操作的理解就可以判斷面試者對指標的基本認識。自認為對指標的理解應該已經到位了。那麼我們下面就來看看到底什麼是陣列的降維與公升維。公升維與降維只存在於高於一維的陣列中,我們就以最簡單最常用的二維陣列作為演示物件來說明什麼...
特徵預處理 降維
降維 降維是指在某些限定條件下,較低特徵的個數,得到一組 不相關 的主變數的過程 1 特徵選擇 1.1 方法 嵌入式embedded 模組 sklearn.feature selection 1.2 方差選擇 sklearn.feature selection.variancethreshold t...