鱼C论坛

 找回密码
 立即注册
查看: 1220|回复: 7

[已解决]C语言地址问题

[复制链接]
发表于 2021-10-18 17:23:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
假如我定义了
char a1[]="123456";
char a2[7]={‘0’};
如果我想让a2拷贝a1,为什么不可以直接a2=a1?

我的理解是:
因为数组名是首元素地址,那么我将a1的地址赋给a2,那么a2也指向a1的首元素地址。
哪错了?
最佳答案
2021-10-18 18:52:47
本帖最后由 jackz007 于 2021-10-18 18:56 编辑

       a1、a2 都是内存地址没错,可问题的关键是,数组名称与内存地址是绑死在一起的,它们都不能被赋值,也就是说,它们都是只读的,在这一点上区别于一般的指针型变量。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-18 17:25:11 | 显示全部楼层
很简单,数组不支持这样赋值,语言就是这样定义的
C语言就规定不能这样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-18 17:35:13 | 显示全部楼层
ANSI C、C99、C11、C17 都不允许这样赋值

你要是想问就问由 丹尼斯·里奇 和 肯·汤普逊 吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-18 18:52:47 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2021-10-18 18:56 编辑

       a1、a2 都是内存地址没错,可问题的关键是,数组名称与内存地址是绑死在一起的,它们都不能被赋值,也就是说,它们都是只读的,在这一点上区别于一般的指针型变量。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-18 19:32:21 | 显示全部楼层
记忆中语言就是这么规定
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-18 19:54:11 | 显示全部楼层
屏幕截图 2021-10-18 195333.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-18 20:39:31 | 显示全部楼层
人造人 发表于 2021-10-18 17:25
很简单,数组不支持这样赋值,语言就是这样定义的
C语言就规定不能这样

我也知道规定,只是我先主学了java,它允许一个数组成为另一个数组的管理者 所以现在学回C的时候感觉到有疑问 haha ~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-18 20:44:25 | 显示全部楼层
我是第一名 发表于 2021-10-18 20:39
我也知道规定,只是我先主学了java,它允许一个数组成为另一个数组的管理者 所以现在学回C的时 ...

对呀,C语言不允许这样做
就是这样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-11 12:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表