C语言中的数组与字符串

1. 数组与指针:

对于数组,需要注意两点:1, C语言中只有一维数组, 而且数组的大小必须在编译期就作为一个常数确定下来; 2. 对于一个数组,我们只能做两件事:确定数组的大小 和 获得指向该数组下标为0的元素的指针;

实际上,对于数组下标的运算,实际上都是通过指针进行的;

如: int a[10]            ,数组名 a 实际上为指向数组第0个元素的指针; 所以, a[i] 可以表示为  *(a+i), 即对指针求值;

int b[10][31]            表示了b 是一个援用10个元素的数组, 而每一个元素又是拥有31个整型元素的数组;      所以,b 表示b[0] 的地址,而 b[0]表示了 b[0][0]的地址;  b+i 表示了 b[i]的地址(即指向b 的第i个元素的指针),

                              对于 b[i][j],它等阶于      *(*(b+i)+j)

 

2. 字符数组和字符串:

字符数组是用用于存放字符串的:

// 字符数组的定义:它与数组定义一样,只是类型改为了char;
char a[10]

//在定义的时候初始化:
char a[10] = {'a', 'b', 'c'} 
或 char a[10] = "abc"      此时,C编译系统会在字符串结尾自动加上'\0';

 

用指针来定义一个字符串:

char* a = "abc"           系统也会自己在字符串后面加上’\0';

 

注意,特别重要:

用指针定义字符串时, 初始化指针时所创建的字符串常量被定义为只读。如果试图通过指针修改这个字符串或其中一个单个字符的话,则会报错的;

有字符数组定义的字符串时,由字符串常量初始化的数组是可以修改的.

使用malloc()或calloc()申请的内存是可以修改的;

 

几个简单的字符处理函数:

下面的几个字符串的处理函数包含在头文件 string.h 中;

字符串的输入函数:gets()

image

字符串的输出函数:puts( )

image

字符串的连接函数: strcat( )

image

字符串复制函数: strcpy( )

image

字符串比较函数:strcmp ( )

image

测试字符串的长的函数: strlen( )

image

posted @ 2017-08-26 11:24  殷大侠  阅读(734)  评论(0编辑  收藏  举报