为什么下面的C代码不能编译?看起来它应该只是改变指针的地址,但它会引发错误.
int x[10];
int y[10];
y=x;
Run Code Online (Sandbox Code Playgroud)
CB *_*ley 10
x并且y是数组,而不是指针.在C中,数组不能改变大小或位置; 只有他们的内容可以改变.您无法直接分配数组.
如果你想要一个指向其中一个数组的指针,你可以像这样声明一个.
int *z = x;
Run Code Online (Sandbox Code Playgroud)
如果需要分配数组,可以创建包含数组的结构.structs可以C分配.
什么指针?你有两个数组.数组不是指针.指针在内存中保存单个变量的地址,而数组是指定大小的连续元素集合.
也就是说,无法分配数组.可以想象,说y = x可能每个元素从复制x到y,但这样的事情是危险的(偶然做简单的东西看作为一个分配一个昂贵的操作).不过你可以手动完成:
for (unsigned i = 0; i < 10; ++i)
y[i] = x[i];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
158 次 |
| 最近记录: |