字符串操作
1. 拷贝
最好优先选择memcpy 效率,稳定性比较高
优先性:
memcpy > snprintf> strncpy > sprintf > strcpy
2. 查找
最好优先性选择memmem 效率,稳定性高
声明变量时需要初始化的几个:
字符串 数组 应该用 memset进行初始化
指针应指向NULL
变量应初始化为0
3、下面,我们再来看一个交叉编译的事情,下面的两个文件可以编译通过吗?如果可以通过,结果是什么?
file1.c
int arr[80];
file2.c
extern int *arr;
int main()
{
arr[1] = 100;
printf("%d/n", arr[1]);
return 0;
}
参考答案:该程序可以编译通过,但运行时会出错。为什么呢?原因是,在另一个文件中用 extern int *arr来外部声明一个数组并不能得到实际的期望值,因为他们的类型并不匹配。所以导致指针实际并没有指向那个数组。注意:一个指向数组的指针,并不等于一个数组。修改:extern int arr[]。(参考:ISO C语言 6.5.4.2 节)