鱼C论坛

 找回密码
 立即注册
查看: 2772|回复: 6

关于字符串地址问题。。。。。

[复制链接]
发表于 2012-2-2 17:31:16 | 显示全部楼层 |阅读模式

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

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

x
strcoy(stu.name, "fishc");// 在鱼老师回答为什么不能用stu.name = "fishc"时说道:“fishc”字符串传的是地址,但是我想问“fishc”是我们人为定义的,数据应该没有在内存中储存过,会有地址吗? 还是我理解错误了?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-2 22:08:24 | 显示全部楼层

回帖奖励 +2 鱼币

stu.name 是个字符数组。本质上说,stu.name = "fishc"这个写法很符合我们的直觉,如我们常写:
int a;
a = 5;
问题在于字符串不是C语言里的基本类型,所以它使用起来不能像int,double那样方便。
我们
1.用strcpy()函数替代基本类型里的赋值运算符=
2.用strcat()函数替代基本类型里的运算符+=
3.用strcmp()函数替代诸如<,>,==等关系运算符。
总之,一切麻烦的根源来自于字符串非基本类型。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-6 23:14:15 | 显示全部楼层
全局变量非内存时期存在 文件时期就存在了 运行前存在
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-6 23:57:32 | 显示全部楼层
一串字符串传递的确实是地址,这一点学了汇编后会更深刻。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-7 01:12:53 | 显示全部楼层
表示不太知道
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-7 11:13:42 | 显示全部楼层
直接放在char *str = 字符串的  在编译后 就放到了静态存储空间  看看反汇编
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-2-9 22:32:54 | 显示全部楼层
我知道答案了  
字符串在被使用前会在内存中储存,字符串赋值传递的首地址 所以char a[8]是报错的。
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-11-11 02:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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