C C 的一些關於字元陣列和指標的小總結

2021-06-26 13:49:43 字數 2267 閱讀 8739

1.陣列作為引數,引數定義時可以寫成 int b或是 int *b,傳值時寫成 b 或者&b[0]是等價的。因為對於一維陣列來說,b就是指數組b的首位址。也就是說傳入函式時,b就退化成單獨的位址了,並且不儲存任何有關陣列的長度。所以,你休想在函式定義中獲得其長度,真是痛苦,只有在傳參時多加入幾個引數來確定其長度了!這點真的令人很痛苦!!不過好像可以通過模板解決,在下就不懂了。

2.怎樣獲得陣列元素個數?

int n = sizeof(a)/sizeof(a[0]);
3.經常會犯的錯誤,常常因為這個另程式編譯通過,而執行時就會奔潰。原因就是在main函式前定義了類似 int *a; 而在main中未對其進行分配空間!

int **b;

int main()

4.對於char陣列,我們可以直接輸出 cout<

#define max_len 1000

char b[max_len+10];

然後使b[1]~b[1000]賦值,另b[max_len+1]賦值為0(int 型的0),如此一來,就可以直接輸出!

5.如何讓int型指標指向二維陣列的首指標呢?

int a[100][100];

int **p = a;

6.如何給二維指標分配空間

這個很重要!經常用到哦!

我們都知道給一維陣列分配空間時:

int *a;

int main()

二維分配就有點小麻煩了呢!

a = new int*[100];

for(int i = 0; i < 100; i++)

首先:a = new int *[100]; 分配100個 int*型別的空間,

然後每個int*的空間都分配100個int型的空間。int *是陣列指標,就是陣列首元素的指標,由於二維陣列是m個長度為n的陣列,所以我們首先要給a分配m個指標,每個指標指向乙個陣列,然後給每個指標陣列(a[i]儲存的是指向陣列的指標)分配空間就可以了!第二步的分配空間類似與一維陣列的分配空間愛你,都是 new int[n].

注意:memset不能直接對二維陣列進行初始化,會出現錯誤!不行你就試一試~~。

附帶最長公共子串行的**吧。。

//最長公共子串行

#include#include#include#includeusing namespace std;

#define max_len 100

/*隨機長度且隨機值的兩個子串行*/

char *a1, *a2; //兩個隨機字串行

int **b, **c;

int len1 = 0;

int len2 = 0;

void getserials()

a1[len1] = 0;

for (int i = 0; i< len2; i++)

a2[len2] = 0;

}/*二維陣列c是儲存最長自序列的長度的,如c[i][j]儲存的是

序列長度為i和j的自序列長度;

而二維陣列b儲存的是各種方向,由這些方向可以還原子序列的

具體值。b的0,1,2代表三種情況

*/void lcslength(int m, int n, char *x, char *y, int **c, int **b)

else if (c[i - 1][j] >= c[i][j - 1])

else

}}void lcs(int i, int j, char *x, int **b)

else if (b[i-1][j-1] == 1) lcs(i - 1, j, x, b);

else lcs(i, j - 1, x, b);

}int main()

{ time_t start, end;

getserials();

//給二維陣列b,c分配記憶體

b = new int*[len1];

for (int i = 0; i

關於字元指標和字元陣列的一些錯誤

老犯此類錯誤 char p abc 則abc儲存在常量儲存區,而p直接指向了這個常量儲存區,所以不能改變abc的內容 p d 是錯誤的,因為是常量儲存區,不能改變。char p null p d 也是錯誤的。char p p d 也是錯誤的,提示指標沒有賦初值。以上幾種更不可以strcpy p,ab...

關於陣列和指標的一些理解

int a 3 int b a cout b 了解了上述原理後,我們來看看下面這種情況。陣列建立的方式有兩種。第一種 int arr new int 2 cout arr 第二種情況 int arr cout arr 第乙個輸出,接受引數是乙個陣列,隱式轉換成陣列首位址。第二個輸出 arr,這得到的...

一些關於陣列和指標的想法

指標是c的難點和精華,當他和陣列相遇時,如果沒有好好理清它們之間的關係和原理,那真是搞不清理還亂了。1 二維陣列a代表什麼含義?首先定義了乙個二維陣列a,當然我們必須把a看成乙個一維陣列,它有兩個 大 行 元素,每個 大 行 元素都由五個 小 列 元素,這是我們理解陣列的前提條件。第七行定義了乙個i...