C数组和字符串

来源:互联网 发布:mac电脑怎么打顿号 编辑:程序博客网 时间:2024/05/21 11:27

一、数组的概念及定义

1、概念:用来存放一组类型相同的数组

特点:

 只能存放一组数据,比如int类型的数组或者float类型的数组

 数组里面的数据称为“元素”

2、数组的定义

类型   数组名[元素个数];

 int a[10];

    初始化与常见错误:

  // 正确  int a[3]={3,5,8};   int a[3]={2,9};  int a[]={1,3,5,6,7,8};  int a[5]={a[0]=1,a[3]=5};  // 指定元素初始化,其他元素默认为0  // 错误   int a[];  int[4] a;  int a[b];  a={3,6,7};  a[4]={1,5,6,8,2};

3、内存分析

数组的内存寻址与基本数据类型一样,由大及小,优先分配大的地址给先来的变量,但是数组元素在内存中的存储地址是由小及大的,按照元素的顺序来,元素值的存储又是由大及小的

    例如

char cs[5] = {'a', 'A', 'D', 'e', 'f'};

    该数组内存地址分配原理如下




二、二维数组

1、二维数组是一个特殊的一维数组:它的元素是一维数组

例如 int a[2][3]可以看作由一维数组a[0]和一维数组a[1]组成,这两个一维数组都包含了3个int类型的元素 

2、初始化

int a[3][4] = {1,2,3,4,5};

int a[3][4] = {{},{},{}};

 数组元素简单访问

int a[][5] = {3,5,17,26,8};


三、字符串

1、字符串的初始化

char s[] = "123";

其中"123"是由'1'、'2'、'3'、'\0'组成

字符串的输出"%s",'\0'不会被输出

2、\0 的作用

作为字符串结束的标志,例如

int mian(){char name[8] ="itcast";char name2[] = {'i','t'};printf("%s",name2);printf("%s",&name2[1]);}
输出结果为 itcast 与 titcast,因为name2没有\0结尾,结合内存存址分析可知,printf会从name[1]也就是't'字符的地址开始访问,知道遇到\0停止输出。

3、字符串变量与字符串常量

字符串常量存储在常量区,下图name2跟name3地址相同,都指向唯一"it"

字符串变量属于数组,都存放在内存的栈内存中,可以改动。

小结

定义字符串的2种方式:

1>利用数组 char name[] = "it";

特点:字符串里面的字符是可以修改的。

使用场合:字符串的内容需要经常修改。

2>利用指针 char *name = "it";

特点:字符串的其实是一个字符串常量,里面的字符是不能修改的。

使用场合:字符串的内容不需要修改,而且这个字符串需要经常使用

保存字符串有2种方式,一时利用数组,另一种是利用指针

同样保存字符串数组也有两种方式,一是利用数组,一是利用指针

字符串是可变的,用数组存储。


0 0