C++字符数组(定义和初始化、赋值和引用)

	char c[6];//发现这里无论定义多长用strcat会扩充数组大小
	c[0]='C'; c[1]='h';c[2]='i';c[3]='n';c[4]='a';c[5]='\0';  //不加零(结束标志的话strcat是有问题)
	char d[14]={'I','s','0',0X00,'a',0X00,'m','n','h','a','p','p','y','\0'};//定义时[]中的数字必须大于填充的值,这里也演示了出现0x00数组会被认为结束的现象,但在编译的时候它又可以视别出长度不够,这里的0x00与\0等价


	strcat(c,d);
	printf("%s\n",c);

C++字符数组(定义和初始化、赋值和引用)

用来存放字符数据的数组是字符数组,字符数组中的一个元素存放一个字符。字符数组具有数组的共同属性。由于字符串应用广泛,C和C++专门为它提供了许多方便的用法和函数。

一、字符数组的定义和初始化

定义字符数组的方法与前面介绍的类似。例如
char c[10];
c[0]=′I′;c[1]=′ ′;c[2]=′a′;c[3]=′m′;c[4]=′ ′;c[5]=′h′;c[6]=′a′;c[7]=′p′;c[8]=′p′;
c[9]=′y′;
上面定义了c为字符数组,包含10个元素。在赋值以后数组的状态如图5.7所示。

图5.7

对字符数组进行初始化,最容易理解的方式是逐个字符赋给数组中各元素。如
   char c[10]={′I′,′ ′,′a′,′m′,′ ′,′h′,′a′,′p′,′p′,′y′};
把10个字符分别赋给c[0]~c[9]这10个元素。

如果花括号中提供的初值个数大于数组长度,则按语法错误处理。如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符。如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。如
   char c[]={′I′,′ ′,′a′,′m′,′ ′,′h′,′a′,′p′,′p′,′y′};
也可以定义和初始化一个二维字符数组,如
   char diamond[5][5]={{′ ′,′ ′,′*′},{′ ′, ′*′,′ ′,′*′},{′*′,′ ′,′ ′,′ ′,′*′},{′ ′,′*′,′ ′,′*′},{′ ′,′ ′,′*′}};

二、字符数组的赋值与引用

只能对字符数组的元素赋值,而不能用赋值语句对整个数组赋值。如
char c[5];
c={′C′,′h′,′i′,′n′,′a′}; //错误,不能对整个数组一次赋值
c[0]=′C′; c[1]=′h′;c[2]=′i′;c[3]=′n′;c[4]=′a′;  //对数组元素赋值,正确

如果已定义了a和b是具有相同类型和长度的数组,且b数组已被初始化,请分析:
a=b;  //错误,不能对整个数组整体赋值
a[0]=b[0];  //正确,引用数组元素

例5.9 设计和输出一个钻石图形。
#include <iostream>
using namespace std;
void main( )
{
   char diamond[][5]={{′ ′,′ ′,′*′},{′ ′,′*′,′ ′,′*′},{′*′,′ ′,′ ′,′ ′,′*′},{′ ′,′*′,′ ′,′*′},{′ ′,′ ′,′*′}};
   int i,j;
   for (i=0;i<5;i++)
   {
      for (j=0;j<5;j++)
         cout<<diamond[i][j]; //逐个引用数组元素,每次输出一个字符
      cout<<endl;
   }
}
运行结果为
  *
  * *
*  *
  * *
  *
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值