27313|6

60

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于字符串指针的初始化 [复制链接]

如果要初始化一个字符串有两种写法:
1:char *p = "hello";
2:char *p; p = "hello";
这两种写法有没有错的,是否有区别。
谭浩强c程序设计p238说是一样的,大家讨论一下吧

最新回复

low
一样  详情 回复 发表于 2008-7-15 23:14
点赞 关注

回复
举报

54

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
一样
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
一样的,但是也看编译器和运行环境,这样定义一般情况下p指针指向的地址是代码区/只读区,所以再写p[0] = 'x';编译可通过,运行的时候会出现错误. 但是在另外的编译器/运行环境有可能编译和运行都没有错误
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

4
 
#define uchar unsigned char

int main(void)
{
        uchar *p = "hello";;

        *p = '1';

        while(1)
        {       

        }
}

#define uchar unsigned char

int main(void)
{
        uchar *p;
        p = "hello";

        *p = '1';

        while(1)
        {       

        }
}
我在keil里边软仿真了一下,这两种写法结果都不能修改p指向的第一个字符,那么是不是说是一样的呢?
REALLYU兄说会出现错误,会出现什么错误呢?
代码区不是不能修改吗,即使试图修改了也不会成功的,那么会有什么危险呢?
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

5
 
这两种写法是一样的, 我指的不一样是比如在keil C和windows下你写的这两段代码,在keil C下不能修改代码区,在windows下也不能修改并且会弹出一个非法操作的对话框.但是在有些平台下可能能够修改代码区(或者可能编译器没有把字符串放在代码区).但是这两种写法是一样的,都是p指向个放在代码区的字符串是.我多嘴了,可能让你有混淆.
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

6
 
一样的,但是我认为代码区是可以修改的,至少是在Windows平台是可以的。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

7
 
一样
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表