目录
定义数组
https://m.php.cn/article/417962.html
variable-sized object may not be initialized(数组的大小必须是常量):https://blog.csdn.net/weixin_44216359/article/details/127947762
数组初始化的几种方法比较
https://blog.csdn.net/qq_19734597/article/details/101516810
数组与指针
https://www.zhihu.com/question/418659897/answer/2242665892 (如何评价C语言让数组退化为指针的设计?)
函数与数组
1.函数无法返回数组
https://blog.csdn.net/qq_42366672/article/details/115179783
在c语言中如果直接返回数组类型,会编译报错。
char[] test(){
char buf[128];
return buf;
}
只能通过指针的方式返回
char* test(){
char buf[128];
return buf;
}
2.sizeof问题
定义一个char数组
char buf[128];
sizeof(buf); //结果为128
如果把buf传入函数
void test(char[] bufOut){
sizeof(bufOut); //结果为8
}
test(buf);
这是因为test函数的参数bufOut实际为buf数组的指针,sizeof(bufOut)始终就是指针类型的大小。
3.c语言 char* 传入函数 利用strcpy,到函数外没有被更新.
在C语言中,字符串是字符数组,当你把一个字符串传递给函数时,实际上传递的是这个字符数组的一个拷贝,所以如果你在函数内部使用strcpy更新这个拷贝,当函数执行完毕返回时,原始的字符串是不会被更新的。
解决办法:函数直接返回char*
字符串与数组
- 字符数组清空
char str[100]; memset(str, 0, sizeof(str));
数组间的引用
-
1.数组不能用等号拷贝
-
2.Array type 'char[50]' is not assignable
在C或C++等编程语言中,基本数据类型如int, float, double等可以直接赋值,但是数组类型(比如char[50])通常不能直接赋值,因为它们代表的是一个内容可变的数据集合,而赋值操作通常是浅拷贝,这意味着如果你尝试拷贝一个数组到另一个数组,实际上是拷贝的数组的引用而不是数组的内容。
解决方法:
要解决这个问题,你需要遍历数组并逐个复制元素。可以使用标准库中的strcpy函数(来自
示例(对于字符串数组):
#include <string.h>
char str1[50] = "Hello";
char str2[50];
strcpy(str2, str1); // 正确方法:复制字符串
0 条评论