c++学习笔记(五)

数组

c++的数组好像和c语言差不多
数组是可以存储同类型值的一种数据格式
数组定义有三个要素

  1. 存储在每个元素中值的类型
  2. 数组名
  3. 数组中元素的个数

数组中的元素下标应当是有效的,否则可能存在潜在的危险。
数组也可以通过{}在初始化时候来直接赋值,例如

int hand[4];
hand[1]=3;
hand[2]=6;
hand[3]=8;
hand[4]=10;
int cards[4]={3,6,8,10};

如果初始化时只对其中的几个值进行赋值,那么其他的值默认为0
如果想要所有元素为0,只要这样定义就可以了

int hand [500]={0};

有时候也可以让程序自己计算数组元素的个数不过这样可能会出错

short things[]={1,2,3,4}
int num_elements = sizeof things/sizeof (short)

c++11标准中允许不带等号,允许 {}是空的,不可以缩窄转换

缩窄转换

C++中的变量占用内存大小不同,比如int是4个字节 short是2个字节, 如果把int强制转换成short就叫做缩窄转换,当然,这是有风险的, 例如 int a = 1000; short b = (short)a; 这样没有问题,但是当a超过short的范围,会造成数据溢出,比如 int a = 100000; short b = (short)a; 此时在内存中相邻b的变量,会被修改,造成数据溢出

C-风格字符串

将字符串存储在char数组中,特点是以空字符’/0’结尾
例如

char cat[4]={'c','a','t','/0'};

字符串常量和字符串字面值
只需要在数组后用引号将字符串括起来即可

char bird[11]="Mr. Cheeps"
char fish[]="Bubbles"

字符串常量不能与字符常量互换
地址是一种独立的类型

字符串拼接

以下各种写法等价

cout<<"I'd give my right arm to be""a great violinist \n ";
cout<<"I'd give my right arm to be a great violinist \n ";
cout<<"I'd give my right ar"
"m to be a great violinist \n ";

在数组中使用字符串

cin>>数组名
即可将内容输入到数组
程序中使用了头文件
strlen()函数来确定字符串的长度

#include <iostream>
#include <cstring>
int main(){
	using namespace std;
	const int Size = 15;
	char name1[Size];
	char name2[Size] = "C++owboy";

    cout<<"Howday!I'm"<<name2;
    cout<<"!whats your name?\n";
    cin>>name1;
    cout<<"Well,"<<name1<<", your name has";
    cout<<strlen(name1)<<"letters and is stored\n";
    cout<<"in an array of"<<sizeof(name1)<<"bytes.\n";
    cout<<"Your initial is"<<name1[0]<<".\n";
    name2[3] = '\0';
    cout << "Here are the first 3 characters of my name:";
    cout<<name2<<endl;
    return 0;
}

sizeof和strlen的区别;
sizeof主要是一开始定义的数组长度有多长,而strlen则是实际装入字符的长度strlen只记录可见字符而不记录空字符。
本次输入的字符是zwb返回值是3而不是4正是因为如此
数组的长度定义不得少于strlen(“zwb”)+1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值