1.数组的定义:
具有一定顺序关系的、相同数据类型的元素的集合。存放在一片连续的内存空间。
2.数组分类(按维数分:)
一维数组:a[9]
二维数组:a[i][j]
一维数组构成的数组,按行i存储的
多维数组:a[i][j][k]...
(1):在定义时一起赋值
a[200]={1,2,3,4,5};
等效 a[]={1,2,3,4,5};
a[2][2]={1,2,3};
等效 a[2][2]={{1,2},{3}};
等效 a[][2]={{1,2},{3}};
定义数组时赋值,一维数组的空间大小可以省略
(2):在定义后逐个赋值 (for 循环)
4.指针和数组:
数组名就是数组首元素的指针(它是一个指针常量)
注意数组名和下标运算符的意义
数组中的元素和单个变量是一样的
数组不要越界访问!!!!
int a[10];
a[10] //两个10的意义,不一样
字符数组
1.字符数组:
数组中元素的是字符类型。
2.初始化方式:
(1)逐个赋值
char ch[6];
ch[0]=H;
ch[1]=e;
ch[2]=l;
ch[3]=l;
ch[4]=o;
ch[5]=\0;
(2)用字符串常量赋值
char ch[6]={"Hello"};
char ch[6]="Hello";
char ch[]="Hello";
3.输出方式:
(1)输出逐个字符 %c
(2)输出整个字符串 %s (输出 '\0' 结束)
4.与字符串处理相关的函数
#include <string.h>
strcpy(字符串拷贝,包括'\0')
strcpy,strncpy,strcat这些函数很危险,它们不会检查越界访问(只认‘\0’),这个工作由调用者负责,一要保证目标缓冲区(Buffer)大小充足
具有一定顺序关系的、相同数据类型的元素的集合。存放在一片连续的内存空间。
一维数组:a[9]
二维数组:a[i][j]
一维数组构成的数组,按行i存储的
多维数组:a[i][j][k]...
(1):在定义时一起赋值
a[200]={1,2,3,4,5};
等效 a[]={1,2,3,4,5};
a[2][2]={1,2,3};
等效 a[2][2]={{1,2},{3}};
等效 a[][2]={{1,2},{3}};
定义数组时赋值,一维数组的空间大小可以省略
(2):在定义后逐个赋值 (for 循环)
4.指针和数组:
数组名就是数组首元素的指针(它是一个指针常量)
注意数组名和下标运算符的意义
数组中的元素和单个变量是一样的
数组不要越界访问!!!!
int a[10];
a[10] //两个10的意义,不一样
字符数组
1.字符数组:
数组中元素的是字符类型。
2.初始化方式:
(1)逐个赋值
char ch[6];
ch[0]=H;
ch[1]=e;
ch[2]=l;
ch[3]=l;
ch[4]=o;
ch[5]=\0;
(2)用字符串常量赋值
char ch[6]={"Hello"};
char ch[6]="Hello";
char ch[]="Hello";
3.输出方式:
(1)输出逐个字符 %c
(2)输出整个字符串 %s (输出 '\0' 结束)
4.与字符串处理相关的函数
#include <string.h>
strcpy(字符串拷贝,包括'\0')
char *strcpy( char *to, const char *from );
strncpy(字符串拷贝,可以指定要拷贝的字节数)
char *strncpy( char *to, const char *from, size_t count );
strcat(字符串连接)
char *strcat( char *str1, const char *str2 );
strlen(求字符串长度,不包括'\0')
size_t strlen( char *str );
strcmp(比较两个字符串的大小,按字典顺序,大小写敏感)
int strcmp( const char *str1, const char *str2 );
strncmp(比较两个字符串开头的部分的大小,大小写敏感)
int strncmp( const char *str1, const char *str2, size_t count );
............................
strcpy,strncpy,strcat这些函数很危险,它们不会检查越界访问(只认‘\0’),这个工作由调用者负责,一要保证目标缓冲区(Buffer)大小充足
缓冲区(Buffer):一块内存空间
字符串(String):
一串字符,即若干个字符构成的一个序列
C语言中没有字符串类型,只能用字符数组表示字符串,为了方便对字符串的处理,C语言提供了很多简化写法.
C语言规定,一个合法的字符串的最后一个字符必须为'\0',即'\0'为字符串结束标志.
在执行标准输入(比如调用scanf或getchar)时,我们键入的字符在我们按下回车键后会进入标准输入缓冲区中,scanf这些函数只是从这个缓冲区中取走相应类型的数据,如果调用函数时这个缓冲区中没有任何数据,这些函数会等待用户按键输入;如果缓冲区中有数据,但不是scanf函数所期望类型的数据,那么scanf函数就会立即失败返回,否则会直接取走相应的数据,不会等待。