C语言笔记——这都是些比较杂的东西了
字符数组
字符数组可以有以下几种初始化方式,选择自己喜欢的(也就是简便的来记一下就好了)。
int main()
{
//初始化字符数组的每个元素
str1[6] = {'P','o','k','e','r','\0'};
//也可以不写元素个数
str2[] = {'P','o','k','e','r','\0'};
//使用字符串常量初始化字符数组
str3[] = {"Poker"};
//使用字符串常量初始化字符数组,可以省略大括号
str4[] = "Poker";
}
处理字符串的函数
这一类函数主要被定义在 string.h
这个头文件中。
sizeof和strlen
这两个函数在之前就讲过了,在这里就再提一下。
#include<stdio.h>
#include<string.h>
int main()
{
char str[] = "Poker";
printf("sizeof is: %d",sizeof(str));
printf("strlen is: %u",strlen(str));
return 0;
}
结果,程序运行时输出的内容为:
sizeof is: 6
strlen is: 5
这就是他们的不同点之一,在之前我们说过,字符数组的最后一位是 \0 但是strlen是不计算这个的,但是 sizeof 是要计算的。
strcpy和strncpy
这两个函数都是字符串的拷贝,但是用法不一样。
strcpy([目标数组],[原始数组]);
strncpy([目标数组],[原始数组],[拷贝长度]);
就相当于两个一个是不受限制的拷贝,另一个是受限制的拷贝。
同时, strncpy 并不会自动追加一个 \0 需要自己去追加。
在使用拷贝函数的时候还应该注意,目标数组要足够大,至少要能够容纳原始数组,不然就会发生溢出。
strcat和strncat
这两个都是字符串的拼接。
这里的 strncat 在字符串最后会自动追加一个 \0
strcmp和strncmp
这个函数运行原理就是逐一对比两个数组的值
然后如果完全相等,返回值就是 0 ,如果不完全相等,就返回 非0数 但不一定是 1
二维数组的特点
在声明的时候,形式如:
int a[3][4]
这个意思就是声明了一个3行4列的数组,然后呢,在具体声明的时候写法可以按照如下来,方便看清,也方便日后debug...........
int a[3][4] = {{1,2,3,4},{2,3,4,5},{3,4,5,6}}
这样来声明多维数组既能保证在一行上的舒坦,又方便debug。
网友评论