快捷搜索: 王者荣耀 脱发

C语言基础 - char字符串数组的概念和定义

在c语言中,字符串是以“字符数组”存储的。

#include <stdio.h>
#include <Windows.h>

int main(void) {
          
   
	char name[32];						// C语言风格的字符串
	
										// 相当于C++风格的:
	printf("请输入你的名字: 
");		// cout << "请输入你的名字: " << endl;
	scanf_s("%s", name, 32);			// cin >> name;
	printf("你好, %s
", name);			// cout << "你好, " << name << endl; 

	system("pause");
	return 0;
}

数组的概念和定义

    什么是数组 数组,就是多个元素的有序“组合”。

生活中的“数组”:

    由多个相同大小的"柜子"组成, 这些"柜子"都有自己唯一的编号 而且"柜子"的编号都是递增顺序

C和C++语言中的数组:

  1. 由多个大小相同的小柜子组成 => 相同大小的内存块组成,即相同类型的数据
  2. 这些小柜子,有自己对应的编号 => 编号从0开始递增
  3. 而且这些编号是递增顺序。
  4. 数组的“容量”是不能改变的。

数组的定义

数组和其他变量一样,需要先定义,再使用。

    实例: int a[8]; //定义了一个数组, //数组名是“a”, //包含8个元素, //每个元素是int类型的变量 说明: 定义了如下数组: int a[8]; 就相当于定义了8个int类型的变量 而且这8个变量是连续存储在内存中的。(8个依次相连的邻居)

数组的初始化

数组的初始化 在定义数组的同时,设置数组内的元素值。

int a[5] = {
          
   20, 5, 30, 13, 18};
printf("%d, %d, %d, %d, %d
", a[0], a[1], a[2], a[3], a[4]);
//或者
cout << a[0] << “,” << a[1] << “,” << a[2] << “,” << a[3] << “,” << a[4];

int a[5] = {
          
   0};  	//把数组的所有元素都初始化为0
printf("%d, %d, %d, %d, %d 
", a[0],a[1],a[2],a[3],a[4]);

int a[5] = {
          
   1};  	//把a[0]初始化为1,其它值都初始化为0
int b[5] = {
          
   1, 5};  //把a[0]初始化为1,a[1]初始化为5,其它值都初始化为0

int a[] = {
          
   1,2,5}; //定义数组a, 这个数组包含3个元素!
               		// 根据“初始化列表”,自动计算数组的容量

//高逼格用法(在某些特殊场合使用)
//优点:但数组的成员较多时,该方式可读性高
//缺点:仅仅C编译器支持,C++编译器中不支持,即C++程序中不能使用。
int a[5] = {
          
   	//只初始化指定下标的成员
	[1] = 1, 	//a[1] = 1
	[3] = 2, 	//a[3] = 2
	//没有指定的成员,被初始化为0
};

常见错误

int  a[2] = {
          
   1,2,5}; //错误!初始值太多,大于数组的容量

int  a[3];
a = {
          
   1, 2, 3};  	//不能对数组名直接赋值!

int  a[3];
a[3] = 10;  		//下标越界!下标的取值范围是 0, 1, 2

数组元素的访问

    数组的内元素的访问 通过下标访问对应的元素。 特别注意, 数组的第一个元素的下标是0, 而不是1
int  age[10];	//10个人的年龄	
a[5] = 20;   	//把第6个人年龄赋值为20岁

printf(“%d
”,  a[5]); 	// 或者cout << a[5];

另类用法: 使用下标的方式访问string字符串(不推荐使用此方法)

string name = "camel";

	// 可以使用数组下标的方式来访问对应的数据
	for (int i = 0; i < name.length(); i++) {
          
   
		cout << name[i];
	}
	cout << endl;

	//把首小写字母c, 换成大写字母C
	name[0] = C;
	cout << name << endl;

数组的越界

    数组的越界, 是指下标超出正常的范围! 例如: int a[10]; //a[-1] 和 a[10]都是越界! 越界的后果 越界非常危险,可能导致数据破坏,或其他不可预期的后果! 越界的控制 需要程序员自己手动控制,编译器不做任何检查!因为,C/C++语言完全信任程序员!
经验分享 程序员 微信小程序 职场和发展