鱼C论坛

 找回密码
 立即注册
查看: 2133|回复: 8

[技术交流] 哪位大神能解释下这样的传递有什么隐患吗?

[复制链接]
发表于 2014-7-17 21:51:13 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>
void main()
{
char *a = "I am happy.",*b;
b = a;
printf("A=%s\nB=%s\n",a,b);
}
如上,完全可以实现,但是不知道有声明缺点,和隐患没有,求指导
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-17 22:03:58 | 显示全部楼层
其他不说用 %s 就会有很大的隐患
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-17 22:09:53 | 显示全部楼层
问题不大吧

点评

你确定??? %s问题不大??  详情 回复 发表于 2014-7-17 23:03
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-17 22:10:42 | 显示全部楼层
简而言之 定义一个字符串指针会分配一个字节的内存来存放指针本身
他的内容就是字符串的地址但是这个地址能用的空间却不知道直接写内容
就有可能覆盖掉其他有用的内容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-17 22:33:44 | 显示全部楼层
大概明白了,谢谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-17 23:03:52 | 显示全部楼层

你确定??? %s问题不大??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-18 00:26:11 | 显示全部楼层
不难明白吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-18 01:25:47 | 显示全部楼层
本帖最后由 zhoushilei 于 2014-7-18 01:28 编辑

这样写其实没有什么问题的,对于printf说这个%S有问题,其实要这样说,这个函数本来就是有很多BUG的,除非要求效率,一般我都用C++的cout。  
对于牡丹同学所谓的“但是这个地址能用的空间却不知道直接写内容就有可能覆盖掉其他有用的内容",c语言都是申请空闲空间的,当前的使用(被其他程序所占用)的空间是不会被再次申请到。而且释放的话,即使不写,编译器也会在程序结束后自动释放空间使其成为可用空间。而且你修改的是b空间,不是B所指向的地址的空间,即让A和B都指向放有”。。。。。“的空间。
指针这个东西就是一个不安全的东西,最好用引用。(by java users){:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-21 17:26:15 | 显示全部楼层
zhoushilei 发表于 2014-7-18 01:25
这样写其实没有什么问题的,对于printf说这个%S有问题,其实要这样说,这个函数本来就是有很多BUG的,除非 ...

谢谢您的回答,豁然开朗了,已经搞清楚它们之间的关系了 {:7_168:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-29 00:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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