C 陣列初始化 - w3c菜鳥教程
文章推薦指數: 80 %
C 陣列初始化,定義int pia new int 10 array of 10 uninitialized ints ... 1. 元素只能初始化為元素型別的預設值,而不能像陣列變數一樣,用初始化 ...
C陣列初始化
2021-09-0512:08:01字數3626閱讀9071
定義:
int*pia=newint[10];// arrayof10uninitialized ints此
new
表示式分配了一個含有
10個
int
型元素的陣列,並返回指向該陣列第一個元素的指標,此返回值初始化了指標
pia。
在自由儲存區中建立的陣列物件是沒有名字的,只能通過其地址間接地訪問堆中的物件。
注意:c++使用
new和
delete
在堆(自由儲存區)上分配和釋放動態陣列。
動態陣列初始化:
1.元素只能初始化為元素型別的預設值,而不能像陣列變數一樣,用初始化列表為陣列元素提供各不相同的初值。
2.對於內建資料型別元素的陣列,必須使用
()來顯示指定程式執行初始化操作,否則程式不執行初始化操作:
int*pia=newint[10]; //
每個元素都沒有初始化
int*pia2=newint[10](); //
每個元素初始化為0
3.類型別元素的陣列,則無論是否使用(),都會自動呼叫其預設建構函式來初始化:
string*psa=newstring[10]; //
每個元素呼叫預設建構函式初始化
string*psa=newstring[10](); //
每個元素呼叫預設建構函式初始化
動態分配空陣列:
char*cp=newchar[0];
之後,可以動態改變
cp的維數。
動態釋放:
deletepia;
典型使用示例:
constchar*pc="averylongliteralstring"; //處理c
風格字串時使用
const指標
constsize_tlen=strlen(pc)+1; //size_t
用於陣列的大小和下標
for(size_tix=0;ix!=1000000;++ix)
一維陣列初始化:
標準方式一:
intvalue[100];//value[i]
的值不定,沒有初始化
標準方式二:
intvalue[100]=;//value[0]
和value[1]
的值分別為1和
2,而沒有定義的
value[i>1]
則初始化為0
指標方式:
int*value=newint[n];//
未初始化
deletevalue; //
一定不能忘了刪除陣列空間
二維陣列初始化:
標準方式一:
intvalue[9][9];//value[i][j]
的值不定,沒有初始化
標準方式二:
intvalue[9][9]=,}
;//value[0][0,1]
和value[1][0]
的值初始化,其他初始化為0
指標方式一:
int(*value)[n]=newint[m][n];
deletevalue;//n
必須為常量,呼叫直觀。
未初始化
指標方式二:
int**value=newint*[m];
for(i)value[i]=newint[n];
for(i)deletevalue[i];
deletevalue;//
多次析構,儲存麻煩,未初始化
指標方式三:
int*value=newint[3][4];//
陣列的儲存是按行儲存的
deletevalue;//
一定要進行記憶體釋放,否則會造成記憶體洩露
多維陣列初始化:
指標方式:
int*value=newint[m][3][4];//
只有第一維可以是變數,其他幾維必須都是常量,否則會報錯
deletevalue;//
一定要進行記憶體釋放,否則會造成記憶體洩露
陣列初始化的大括號後面要加“
;”來表示結束。
陣列訪問:
指標形式:如二維陣列
value[i][j]
的訪問:
*(value[i]+j)
或(*(value+i))[j]
一維陣列引數傳遞:
voidfunc(int*value);
或者是voidfunc(intvalue);
二維陣列傳遞:
定義是int**value;
的傳遞
voidfunc(int**value);
定義是int(*value)[n]=newint[m][n];
的傳遞
voidfunc(int(*value)[n]);//sizeof(p)=4,sizeof(*value)=sizeof(int)*n;
多維陣列在記憶體中儲存時是按照最低維連續的格式儲存的,如二維陣列,}
在記憶體中的位置是這樣順序的“
1,3,2,4
”,這跟
matlab
是有區別的,
matlab
是按列進行儲存的。
在使用指標進行索引時很有用。
char
型別的陣列被稱作字元陣列,通常用來儲存字串。
字串是附加有特殊字元(串尾標誌)的字元序列。
串終止字元表明字串已經結束,該字元由轉義序列
‘\0’
定義,有時被稱為空字元,佔用一個位元組,其中
8位全為
0。
這種形式的字串通常被稱為
c型字串,因為以這樣的方式定義字串是在
c語言中推出的,在
c++一般使用
string
,而mfc
中則定義了
cstring類。
字串中每個字元佔用一個位元組,算上最後的空字元,字串需要的位元組數要比包含的位元組數多一個。
如:
charmovie_star[15]=“marilynmonroe”;
這裡字串是
14個字元,但是要定義
15個字串的陣列。
也可以不指定字元陣列的個數。
如:
charmovie_star=“marilynmonroe”;
我們定義了一個指標,然後給它賦予了一個地址值,然後又不再使用,但是沒有
delete
,那麼當給指標賦予其他的地址值時,原來的記憶體將無法釋放,這就叫做記憶體洩露。
初始化指定初始化idalloc物件的誕生過程,主要是從作業系統獲得一塊足夠大的記憶體,以存放該類的全部例項變數,並將其指定為存放記憶體物件的實力變數的位...
C直接初始化和複製初始化在c裡,物件初始化是一個非常重要但又容易令人混淆的問題。
這裡是自己的一些總結。
一。
初始化與賦值的含義初始化包括建立或說定義物件並...
C11就地初始化與列表初始化在c11之前,只能對結構體或類的靜態常量成員進行就地初始化,其他的不行。
classcclasscorintbc11...
相關推薦
c直接初始化與拷貝初始化
初始化1預設初始化列表初始化
c初始化列表
C初始化列表
C初始化列表
相關推薦
C初始化列表
C初始化列表
c初始化列表
C初始化列表
C初始化列表
C初始化列表
C初始化列表
C初始化列表
C初始化列表
C初始化列表
C列表初始化
相關閱讀
賓士在打造未來汽車時的DevOps實踐
Python實現遠端方法呼叫
機器學習一小白自我學習之環境安裝
C陣列初始化
一條正規表示式同時匹配IP(含有IPv6)和域名
傳入指標來申請記憶體的理解
topic
科技
教育
C
python
linux
R
社會
數碼
遊戲
java
mysql
c++
健康
文化
演算法
資料庫
汽車
娛樂
財經
科學
php
職場
sql
資料結構
C語言
oracle
體育
git
c#
作業系統
延伸文章資訊
- 1在C++中將陣列的所有元素初始化為一個預設值? - 程式人生
C++ Notes: Array Initialization有一個很好的陣列初始化列表。我有一個 ... 在C++中,要將它們全部設定為 -1 ,可以使用 std::fill_n 之類的東西(...
- 2C 陣列初始化 - w3c菜鳥教程
C 陣列初始化,定義int pia new int 10 array of 10 uninitialized ints ... 1. 元素只能初始化為元素型別的預設值,而不能像陣列變數一樣,用初...
- 3c 怎樣將一維陣列整體賦相同初值
c 怎樣將一維陣列整體賦相同初值,1樓加百列陣列是不可以整體賦值的, ... 無論陣列有多大,全部初始化為0的操作很簡單,如int a[3000]=;就可以將a ...
- 4c語言將陣列初始化為1 C語言中陣列的初始化 - 程序員學院
c語言將陣列初始化為1 C語言中陣列的初始化,在c語言中陣列的初始化有以下幾種方式1 定義的時候同時初始化int array 10 2 定義的時候不指定陣列大小由 ...
- 5C語言不定長陣列及初始化方法- IT閱讀
int arr[256] = {0};. int a[256]={0};並不是把a的所有元素初始化為0,int a[256]={1};也不是 ...