龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

C++基础入门教程(三):数组、字符串、结构体、共用体

时间:2014-11-04 02:42来源:网络整理 作者:网络 点击:
分享到:
这篇文章主要介绍了C++基础入门教程(三):数组、字符串、结构体、共用体,需要的朋友可以参考下

今天的标题取得..好严肃的感觉。(小若:咳噗)

这章的内容虽然还是很详(lao)细(dao),但已经开始有很多值得记录的内容了~
那么,今天就来初次介绍数组与字符串…以及结构体..还有共用体..吧。

1.数组

我记得大四实习的时候,请教同事:“什么是属主?”(其实是和数据库相关的东西)
然后同事惊讶地说道:“啊,你连数组都不知道..这,基础还是要好好补补…呐,数组的意思呢,是这样的…”
我听着听着就不对劲,“等等,这是数组…其实我是问这个属主…”
然后同事松了一口气,估计心里在想,“唉,吓死我,我以为来了个浑水摸鱼的实习生了”。
 
等等,我好像跑题了。
那么,数组这么简单,我是不可能给大家介绍的了。
随便说说它的声明和初始化吧,如下代码:

复制代码 代码如下:

// 1.普通人的声明和初始化
int nums[3] = {25, 65, 4};
// 2.只声明
int num[3];  // 这样数组里的元素值是未知的
// 3.只声明,然后赋值
int num[3];
num[0] = 1;
num[1] = 34;
num[3] = 9;
// 4.文艺青年的初始化
int nums[3] = {89}; // 第0个元素赋值为89,其他默认为0
int nums[3] = {};   // 所有元素的值都为0
// 5.非主流青年的初始化
int nums[] = {1,2,3,4,5}; // 不指定大小,由后面的赋值内容决定数组大小,书上说不推荐,我本人不评价~
// 6.新人类的初始化(C++11)
int nums[3] {1, 2, 3}; // 省略了等号

代码里已经把大部分的情况都列出来了~
关于第3条的第二种,其实也是C++11的新特性。
 
最后,对于第6条这种的话,也是C++11的新东西,我个人不太喜欢~
这可能会让不熟悉C++的人觉得很生疏(比如别人只是迫不得已要看一段C++代码,结果出来了这句,可能会一下子蒙住)。
而其他的形式即使没有学过C++的人也能很轻易地知道这是在定义一个数组。(好吧,随便说说的)

2.字符串

字符串有两种,一种是C风格的字符串,另一种是string(可以说是一个类了)
C风格字符串和数组很像,如下代码:

复制代码 代码如下:

// 1.聪明人的初始化
char name[] = "mutou";
// 2.笨蛋的初始化
char name[6] = "mutou";
// 3.蛇精病的初始化
char name[6] = {'m', 'u', 't', 'o', 'u', '\0'};

这种风格的字符串就相当于char类型的数组了,但是它需要在最后加一个'\0'作为结束符(学过C的都知道喇)

我想,正常人都会使用第一种方式的(除非特殊情况?我还真不知道),”mutou”称之为字符串常量,后面会自动给数组补上一个'\0'符号的。

接着就是string字符串了,使用方式如下:

复制代码 代码如下:

// 1.先声明,再初始化
std::string name;
name = "mutou";
// 2.声明和初始化
std::string name = "mutou";
// 3.复制其他字符串内容
std::string name1 = "mutou;
std::string name2 = "hello";
name1 = name2;   // 此时name1为"mutou"
name2 = "nihao"; // 此时name2为"nihao",name1仍然为"mutou"
// 4.连接字符串
std::string name = "mutou";
name += "hehe";

string在头文件string里,所以使用的时候要加上 #include <string>。
并且它属于命名空间std,所以也要加上std::
 
string字符串用起来很舒服,就像是本就该这么用的那种感觉~
如果使用C风格字符串,那么,复制字符串和连接字符串都会变得很麻烦(需要使用strcpy和strcat函数来完成)

3.原始字符串

还有一个比较有意思的字符串,叫做原始字符串。
我们都知道,字符串是用双引号来包围的,如果要在字符串中出现其他双引号,就要用转义字符\。
而使用原始字符串就可以避免这种麻烦,如下代码:

复制代码 代码如下:

std::string name1 = R"("mutou")";
std::string name2 = R"*(("mutou"))*";
std::cout << name1.c_str() << "\n";
std::cout << name2.c_str() << "\n";

精彩图集

赞助商链接