Overblog Tous les blogs Top blogs Technologie & Science Tous les blogs Technologie & Science
Editer l'article Suivre ce blog Administration + Créer mon blog
MENU

数组总结 c++

18 Février 2013 Publié dans #c-c++

数组总结 c++

char a [5];分别是a[0],a[1],a[2],a[3],a[4]。

char name[]=”Ray Krebbs”;

char name[11]=”Ray Krebbs”;系统将自动在字符串末尾添上结束标志’\0’。

数组初始化时,用作初始化的数组元素值放在一个大括号{}中,例如:

int a[3]={ 1, 1, l }; //含三个元素的整型数组,元素的值都是1。

int b[5]={1, 2, 3 }; //可以只给部分(本例为前3个元素)赋值。

int a[]={1, 1, l }; //全部元素都初始化时.可以不用说明元素个数

int array2[5]={0,,2,3,4}; //error不能加入“,”来跳过不赋值的元素。

int array3[5]={ }; //error语法格式错误

因此,数组的大小可用用以下公式来计算:

数组大小 = sizeof(数组名) / sizeof(数组类型)

例1 下面的代码用sizeof确定数组的大小。

//例1 用sizeof确定数组的大小

#include <iostream>

using namespace std;

void main()

{ int a[]={1,2,4,8,16};

for(int i=0; i<(sizeof(a)/sizeof(int)); i++)

cout <<a[i] <<" ";

cout <<endl;

}

运行结果为:

1 2 4 8 16

例2比较字符串数组大小和字符串长度的差别。

解:用sizeof计算数组大小,用strlen函数计算字符串长度。

//例2 字符串数组大小和字符串长度

#include <iostream>

using namespace std;

void main()

{ char ch[]="how are you";

cout <<"数组大小是: " <<sizeof(ch) <<endl;

cout <<"字符串长度是: " <<strlen("how are you") <<endl;

}

运行结果为;

数组大小是: 12

字符串长度是:11

字符串长度不考虑字符串的结束标志'\0'。

例3 输入一个字符串,输出这个字符串,以及输入字符的数目。

//例3 字符串的输入和输出

#include <iostream>

using namespace std;

void main()

{ int a=0;

char chArray[30];

cin>>chArray;

for(int i=0; chArray[i]!='\0'; i++)

{cout <<chArray[i];

a++;

}

cout <<endl;

cout<<"输入的字符数是:"<<a<<endl;

}

可以用“chArray[i]”来代替前面的终止条件,也即 for循环可以写成:

for(int i=0; chArray[i]; i++)

传递给标准库函数

C++中有一个memset()的函数,它可以一字节一字节地把整个数组设置为一个指定的值。

memset()函数在 mem.h头文件中声明,它把数组的起始地址作为其第一个参数,第二个参数是设置数组每个字节的值,第三个参数是数组的长度(字节数,不是元素个数)。其函数原型为:

void * memset(void *,int ,unsigned);

其中void*表示地址。

例4 下面的代码用数组做参数传递给标准函数memset(),以让其将数组设置成全0。

//例4 传递数组名给memset函数

#include <mem.h>

void main()

{ int array1[5];

int array2[50];

memset(array1,0 ,5*sizeof(int));

memset(array2,0 ,50*sizeof(int));

}

如果以这样的方式声明数组

int a[256]={0};

则数组内全部数字自动初始化为0,即一开始数组内所有元素的值为0

如果这样声明

int a[256];

则数组没有初始化,则开始时数组内的数字可以是任意值。

memset是对每个字节赋值,而int有4字节(32位)

比如这样,memset(a,1,sizeof(a));

则a中的每个元素都被赋值成为2进制数为,00000001000000010000000100000001,的数

转换成10进制就是16843009

所以,一般用memset对数组赋0或-1,赋其他的值就要用循环来实现。

二维数组的下标

[0][0] [0][1] [0][2]

[1][0] [1][1] [1][2]

[2][0] [2][1] [2][2]

[3][0] [0][1] [0][2]

多维数组按行存储。考虑一个4×4的表格,图5.4所示为这个表的直观映象,二维表内存映象依然是顺序的存储。C++按行把多维数组映射到线性内存。

二维表的内存映象

Publicité
数组总结 c++
Partager cet article
Repost0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article