一 。数组的三个特点:
有序数据的集合
空间是连续的
类型是一致的
二。 数组定义的时候, 后面有赋值的时候,[]里可以不用写数字, 否则必须写常量或常量表达式
int a[10]; a[10] = {0};// 这样初始化是错误的
在初始化的时候,int补 0, char 补 '/0'
三。 冒泡的第二个for 循环要写正确; 冒泡始终是从第 0 个元素开始的
多维数组以数的方式理解
四: int array[10] = {0} //此句是给array[0]---array[9] 都赋值为0
char str[10] = {' '} //此句是只给第一个元素即str[0]赋值为空格
五 :
char *p = NULL;
char str[10] = {' '};
gets(str);
p = str;
printf("%s", p);
六 strtok :
原型: char *strtok(char *s1, const char *s2)
该函数将s1中首次出现s2中字符的位置置为NULL,因此会破坏s1字符串。该函数一般用于分解s1字符串为用特定分 隔符分隔的多个字符串,s2一般设置为s1中的分隔字符,比如空格,逗号等,例如将一条自然英文语句分解为单词。
for (t = strtok(a, b); t != NULL; t = strtok(NULL, b)) //a为要查的字符串, b为分隔符串
b可初始化 : char b[4] = {" ,."} 或
char b[4]= {' ', ',' '.','/0'};
//请注意'/0'不能缺少, 缺少后就成为字符数组了,此函数要求分隔符必须为字符串
七 重要函数
1. strcat:字符串连接,将src连接到dest的尾部, 看'/0'
属于: (string.h)
原型: char *strcat(char *dest, const char *src)
返回值: 指向dest的指针
2.strcmp / strcpy
属于: (string.h) :看'/0'的, 即当找到'/0'就停止, 认为字符串结束了
原型:int strcmp(char *str1,char *str2)
返回值:小于0:str1<str2,等于0:str1=str2,大于0:str1>str2
原型: char *strcpy(char *dest, const char *src)
返回值: 指向dest的指针
3. strncpy / strncmp 属于: (string.h) :不看'/0'的
1>.char *strncpy(char *dest, const char *src,int count):
作用:将字符串src中的count个字符拷贝到字符串dest中去
返回值: 返回指向dest的指针
2>、 int strncmp(char *str1,char *str2,int count):
对str1和str2中的前count个字符按字典顺序比较
返回值: 小于0:str1<str2,等于0:str1=str2,大于0:str1>str2
以上的strcpy , strcmp, strncmp, strncpy 的只适用于字符型数组
4. memcpy (string.h | mem.h) //这是从内存中拷贝,适用于任何类型
原型:void *memcpy(void *dest, const void *src, size_t n)
src 源字符串,n 拷贝的最大长度
返回值: 指向dest的指针
example :
int a[10] = {1, 2 ,3, 4, 5 , 6, 7 , 8 , 9 , 10};
int b[10] = {0};
memcpy(b, a, sizeof(int) * 10);
5 。strlen : 得到字符串长度
属于: string.h
原型: int strlen(const char *s) // s 待求长度的字符串指针
返回值: 字符串的长度
6. sizeof
example :
char a[10] = {0}: sizeof(a) = 10, strlen(a) = 0 //strlen 是看'/0'的,在此 第0个元素就是'/0',故长度为0
char a[10] = {'0'}: sizeof(a) = 10, strlen(a) = 1
char s[10]; sizeof(a) = 10, strlen(a) = 随机数
八 。 补充
int a[3][5] //此时a中 有 三个元素 , 且a为 int *型的 但集合中有15 个元素
int b[3] //此时a中 有 三个元素 , 且a为 int *型的