C语言地址问题
假如我定义了char a1[]="123456";
char a2={‘0’};
如果我想让a2拷贝a1,为什么不可以直接a2=a1?
我的理解是:
因为数组名是首元素地址,那么我将a1的地址赋给a2,那么a2也指向a1的首元素地址。
哪错了? 很简单,数组不支持这样赋值,语言就是这样定义的
C语言就规定不能这样 ANSI C、C99、C11、C17 都不允许这样赋值
你要是想问就问由 丹尼斯·里奇 和 肯·汤普逊 吧 本帖最后由 jackz007 于 2021-10-18 18:56 编辑
a1、a2 都是内存地址没错,可问题的关键是,数组名称与内存地址是绑死在一起的,它们都不能被赋值,也就是说,它们都是只读的,在这一点上区别于一般的指针型变量。 记忆中语言就是这么规定 人造人 发表于 2021-10-18 17:25
很简单,数组不支持这样赋值,语言就是这样定义的
C语言就规定不能这样
我也知道规定,只是我先主学了java,它允许一个数组成为另一个数组的管理者{:10_249:} 所以现在学回C的时候感觉到有疑问 haha ~ 我是第一名 发表于 2021-10-18 20:39
我也知道规定,只是我先主学了java,它允许一个数组成为另一个数组的管理者 所以现在学回C的时 ...
对呀,C语言不允许这样做
就是这样
页:
[1]