對(duì)于數(shù)組元素很多的初始化可以使用初始化列表方法。在c語(yǔ)言中用于進(jìn)行初始化的程序結(jié)構(gòu)則稱(chēng)為初始化器或初始化列表。
10年積累的成都網(wǎng)站制作、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶(hù)對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶(hù)得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有秀洲免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
1、初始化器
初始化器是聲明器的可選部分,它由一個(gè)'='以及其后的一個(gè)表達(dá)式(或含有多個(gè)以','隔開(kāi)的帶圓括號(hào)表達(dá)式的單一列表)所組成。后面這一列表有時(shí)也被稱(chēng)為“初始化(器)列表”(initializer list)或”初始化列表”(initialization list)。
例:
public class Curry
{public string MainIngredient { get; set; }
public string Style { get; set; }
public int Spiciness { get; set; }}
2、初始化列表
一個(gè)類(lèi)/結(jié)構(gòu)的構(gòu)造函數(shù)可以在定義中于構(gòu)造函數(shù)體前包含一個(gè)初始化列表,用以給類(lèi)/結(jié)構(gòu)的元素賦初值。
例:
class foo
{public:
foo(string s, int i):name(s), id(i){} ; // 初始化列表
private:
string name ;int id ;};
擴(kuò)展資料
在程序里,數(shù)據(jù)初始化也可能在沒(méi)有由明確的語(yǔ)法來(lái)實(shí)現(xiàn)的情況下進(jìn)行。例如說(shuō),如果一個(gè)靜態(tài)變量在沒(méi)有初始化(即未指定初值)的情況下被聲明,則:對(duì)于原生數(shù)據(jù)類(lèi)型:以對(duì)應(yīng)類(lèi)型的零值進(jìn)行初始化;對(duì)于類(lèi)中的靜態(tài)對(duì)象:由其默認(rèn)的構(gòu)造函數(shù)來(lái)進(jìn)行初始化。
每一個(gè)初始化部分里面的代碼在程序運(yùn)行后,或庫(kù)的begin-end塊運(yùn)行之前。delphi使用對(duì)單元相關(guān)樹(shù)的深度優(yōu)先遍歷來(lái)運(yùn)行初始化部分。換句話(huà)說(shuō),就只在一個(gè)單元的初始化代碼運(yùn)行前,delphi就運(yùn)行了特他使用的每一個(gè)單元的初始化部分。每一個(gè)單元僅初始化一次 。
參考資料來(lái)源:百度百科——初始化
百度百科——初始化列表
百度百科——初始化器
C語(yǔ)言中,同變量一樣;數(shù)組也必須先定義后使用。
一維數(shù)組的定義形式:
類(lèi)型標(biāo)識(shí)符? 數(shù)組名[常量表達(dá)式];例如int a[10]; ? 其中a為地址常量。
如變量的定義一樣,int a ;double a;float a等;數(shù)組的定義只是把后面的變量名改為數(shù)組名而已。
int a[10]就是定義了一個(gè)數(shù)組名為a的數(shù)組;此數(shù)組有10個(gè)元素。其中各元素從a[0]到a[9];并沒(méi)有a[10]元素。下面列舉一個(gè)。
擴(kuò)展資料
常量表達(dá)式可以包括字面常量和符號(hào)常量;但不能包含變量。例如對(duì)下面定義是錯(cuò)誤的
int n=5
int a[n]
可以修改為
#define N 5
int a[N]
其中對(duì)二維及多位數(shù)組定義可以類(lèi)推
int? a[x][y][z][...]其中 x,y,z為數(shù)字。
參考資料
百度百科-C語(yǔ)言
intmain(void){
structstudentsbao={};
printf("%d,%s\n",bao.id,bao.name);//輸出是4224528,空(應(yīng)該是null)
//structstudentsbao={3,"123"};可以。第一種賦值方法
//strcpy(bao.name,"bao");//可以,
//printf("%d,%s\n",bao.id,bao.name);
//bao.name="bao";錯(cuò)誤“stray'\351'inprogram”其他是亂碼,
//bao.name[0]='a';
//bao.name[0]='/0';
//printf("%d,%s\n",bao.id,bao.name);
/*這樣可以,*/
//chararr[10]="baobao";
////bao.name=arr;//error"assignmenttoexpressionwitharraytype"
//scanf("%s",bao.name);//可以,
//printf("%d,%s\n",bao.id,bao.name);
//所以scanf那一類(lèi)函數(shù)都可以。
//還有就是memcpy函數(shù)也是可以的
return0;
}
擴(kuò)展資料
C語(yǔ)言結(jié)構(gòu)體數(shù)組的直接賦值及數(shù)組的長(zhǎng)度計(jì)算:
#includestdio.h
//自定義一個(gè)字符串的結(jié)構(gòu)體,包含字符串和字符串長(zhǎng)度兩個(gè)變量
typedefstructStr{
charch[100];
intlength;//char數(shù)組(字符串)的長(zhǎng)度
}myStr;
//剛開(kāi)始聲明變量時(shí)每個(gè)變量的字符串長(zhǎng)度length都為0
//這里以長(zhǎng)度為10的數(shù)組為例,數(shù)組長(zhǎng)度是1000
//對(duì)第0個(gè)到第9個(gè)結(jié)構(gòu)體數(shù)組的長(zhǎng)度同時(shí)賦值為0
myStrmyStr1[10]={
[0...9]={
.length=0,
}
};
intmain(){
inti;
for(i=0;i10;i++){
printf("%d\n",myStr1[i].length);
}
return0;
}
1.代碼如下:#include
#include
using
namespace
std;
class
foo
{
public:
explicit
foo(
int
id=0
)
:
id_(id)
{
cout
__FUNCTION__
"
"
id_
endl;
}
~foo()
{
cout
__FUNCTION__
"
"
id_
endl;
}
private:
int
id_;
};
int
main()
{
int
a[2]
=
{
0,
1
};
//
第一種方法
{
foo
b[2]
=
{
foo(a[0]),
foo(a[1])
};
}
cout
"-----------------"
endl;
//
第二種方法
{
char
_b_buf_[
sizeof(foo)*2
];
foo
(b)[2]
=
(foo()[2])_b_buf_;
for(
size_t
i=0;
i2;
++i
)
{
new(b[i])
foo(
a[i]
);
}
//
...use
b
for(
size_t
i=0;
i2;
++i
)
{
b[2-1-i].~foo();
}
}
cout
"-----------------"
endl;
//
這估計(jì)就是你要的了,和第二種方法一樣
{
foo*
p
=
(foo*)operator
new(
sizeof(foo)*2
);
for(
size_t
i=0;
i2;
++i
)
{
new(p[i])
foo(
(int)i
);
}
//
...use
b
for(
size_t
i=0;
i2;
++i
)
{
p[2-1-i].~foo();
}
operator
delete(
p
);
}
return
0;
}
2.C++
new用法之一
new運(yùn)算符
最常用的是作為運(yùn)算符的new,比如:
string
*str
=
new
string(“test
new”);
作為運(yùn)算符,new和sizeof一樣,是C++內(nèi)置的,你不能對(duì)它做任何的改變,除了使用它。
new會(huì)在堆上分配一塊內(nèi)存,并會(huì)自動(dòng)調(diào)用類(lèi)的構(gòu)造函數(shù)。
C++
new用法之二
new函數(shù)
第二種就是new函數(shù),其實(shí)new運(yùn)算符內(nèi)部分配內(nèi)存使用的就是new函數(shù),原型是:
void
*operator
new(size_t
size);
new函數(shù)返回的是一個(gè)void指針,一塊未經(jīng)初始化的內(nèi)存。如你所見(jiàn),這和C語(yǔ)言的malloc行為相似,你可以重載new函數(shù),并且增加額外的參數(shù),但是必須保證第一個(gè)參數(shù)必須是size_t類(lèi)型,它指明了分配內(nèi)存塊的大小,C++允許你這么做,當(dāng)然一般情況下這是不必要的。如果重載了new函數(shù),在使用new操作符時(shí)調(diào)用的就是你重載后的new函數(shù)了。
函數(shù)不可以定義為數(shù)組,可以用函數(shù)指針來(lái)操作。
1.函數(shù)指針的數(shù)組定義方法:返回值類(lèi)型( * 指針變量名[Number]) (形參列表)。
例如:
double add(double a,double b){}
double sub(double a,double b){}
double mul(double a,double b){}
double div1(double a,double b){}
double (*oper_func[])(double, double) = {add,sub,mul,div1};//函數(shù)指針的數(shù)組定義。
2.函數(shù)指針是指向函數(shù)的指針變量。 因而“函數(shù)指針”本身首先應(yīng)是指針變量,只不過(guò)該指針變量指向函數(shù)。這正如用指針變量可指向整型變量、字符型、數(shù)組一樣,這里是指向函數(shù)。
C在編譯時(shí),每一個(gè)函數(shù)都有一個(gè)入口地址,該入口地址就是函數(shù)指針?biāo)赶虻牡刂?。有了指向函?shù)的指針變量后,可用該指針變量調(diào)用函數(shù)。
擴(kuò)展資料:
指針函數(shù)和函數(shù)指針的區(qū)別:
這兩個(gè)概念都是簡(jiǎn)稱(chēng),指針函數(shù)是指返回值是指針的函數(shù),即本質(zhì)是一個(gè)函數(shù)。我們知道函數(shù)都有返回類(lèi)型(如果不返回值,則為無(wú)值型),只不過(guò)指針函數(shù)返回類(lèi)型是某一類(lèi)型的指針。其定義格式如下所示:返回類(lèi)型標(biāo)識(shí)符*函數(shù)名稱(chēng)。
返回類(lèi)型可以是任何基本類(lèi)型和復(fù)合類(lèi)型。返回指針的函數(shù)的用途十分廣泛。事實(shí)上,每一個(gè)函數(shù),即使它不帶有返回某種類(lèi)型的指針,它本身都有一個(gè)入口地址,該地址相當(dāng)于一個(gè)指針。比如函數(shù)返回一個(gè)整型值,實(shí)際上也相當(dāng)于返回一個(gè)指針變量的值,不過(guò)這時(shí)的變量是函數(shù)本身而已,而整個(gè)函數(shù)相當(dāng)于一個(gè)“變量”。
參考資料:百度百科 -?函數(shù)指針
當(dāng)前題目:c語(yǔ)言構(gòu)造函數(shù)數(shù)組 C語(yǔ)言函數(shù)數(shù)組
轉(zhuǎn)載來(lái)于:http://aaarwkj.com/article14/hhhoge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、面包屑導(dǎo)航、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、商城網(wǎng)站、App開(kāi)發(fā)、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)