C语言字符串的存储初始化

  • Post author:
  • Post category:其他


#include

#include <stdio.h>

#include

#include <Windows.h>

int main(void) {


char name[12]; //名称

//你是坑货
name[0] = 'n';
name[1] = 's';
name[2] = 'k';
name[3] = 'h';
name[4] =  0;  

printf("我感觉:%s\n", name);

//不
name[0] = 'b';  
printf("我感觉:%s\n", name);

//爹
name[3] = 'd';
printf("我感觉:%s\n", name);

system("pause");
return 0;

}

/**

忘写 元素地址 name[0] 或从一开始数

完犊子

如果吧字母换成 字符会形成乱码

name[4] = ‘乱’;

这行忘写 name[4] = 0;

我感觉:nskh烫烫烫烫烫烫??7

我感觉:bskh烫烫烫烫烫烫??7

我感觉:bskd烫烫烫烫烫烫??7

请按任意键继续. . .

**/

在这里插入图片描述

/**

第7节项目精讲-数组的初始化

数组的初始化

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

int a[8] = {20, 5, 30, 13, 18};

printf(“%d,%d,%d,%d,%d\n”, a[0],a[1],a[2],a[3],a[4]);

或者

cout << a[0] << “,” << a[1] << “,” << a[2] << “,” << a[3] << “,” << a[4];

int a[8] = {0}; //把数组的所有元素都初始化为0

printf(“%d,%d,%d,%d,%d\n”, a[0],a[1],a[2],a[3],a[4]);

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

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

int a[] = {1,2,5}; //定义数组a, 这个数组包含3个元素!

// 根据“初始化列表”,自动计算数组的容量

高逼格用法(在某些特殊场合使用)

优点:但数组的成员较多时,该方式可读性高

缺点:仅仅C编译器支持,C++编译器中不支持,即C++程序中不能使用。

//每周的锻炼时间:

int exercises[7] = {


[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

第8节项目精讲-数组元素的访问

数组的内元素的访问

通过下标访问对应的元素。

特别注意, 数组的第一个元素的下标是0, 而不是1

int girlSize[10];

a[5] = 38;

printf(“%d\n”, a[5]);

cout << a[5];

另类用法:

使用下标的方式访问string字符串

string name = “Rock”;

//name[i]是string字符串中的第i个字符(char类型)
for (int i=0; i< name.length(); i++) {
	cout << name[i]; 
}

name[0] = 'L';  //name变成:Lock
cout << endl << name;

数组的越界

数组的越界, 是指下标超出正常的范围!

例如:

int a[10]; //a[-1] 和 a[10]都是越界!

越界的后果

越界非常危险,可能导致数据破坏,或其他不可预期的后果!

越界的控制

需要程序员自己手动控制,编译器不做任何检查!因为,C/C++语言完全信任程序员!

第9节项目精讲-C风格的字符串详解

1.C语言字符串的存储、初始化

字符串,是通过“字符数组”(元素类型为char的数组)来存储的!

demo1

char name[10];

name[0] = ‘R’;

name[1] = ‘o’;

name[2] = ‘c’;

name[3] = ‘k’;

name[4] = 0; //字符串结束符0,就是 ‘\0’

printf(“姓名:%s”, name); //

name[2] = 0;

printf(“姓名:%s”, name); //

demo2

char name[10] = “Rock”; //相当于char name[10] = {‘R’, ‘o’, ‘c’, ‘k’, ‘\0’};

printf(“姓名:%s”, name);

demo3

char name[] = “Rock”; //相当于:name[5] = “Rock”

printf(“%d”, sizeof(name)); //5

**/



版权声明:本文为weixin_45399178原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。