| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 881 人关注过本帖
标题:数组与指针的区别,求助
只看楼主 加入收藏
wanglff
Rank: 2
等 级:新手上路
威 望:5
帖 子:375
专家分:0
注 册:2005-12-21
收藏
得分:0 

这个就要理解了
int *p,a[10];
p=a
a是数组的首地址//它的值是不能变的
p是指向数组的指针//它的值是可以变的


自强不息:)
2007-01-29 12:56
tyc611
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-1-21
收藏
得分:0 
以下是引用hiaod在2007-1-28 18:31:00的发言:
其实楼主的问题并不是编译器的问题,除了2楼指出的原因外,还有就是对指针定义的格式没有领会。
char a[]="abcde";
char *p=a;         /* 这是合法的。  */

char *a="abcde";
char *p=a;         /* 这也是合法的。 */

但如果用:

char *a="abcde";
char *p=*a;

却是非法的。

另外,3楼的说法:“1. 在上面的代码中,ca是一个字符数组,你可以对数组元素进行修改,而指针p指向一个字符串常量,它是不可修改的(如果对其修改,这种行为是未定义的);”也有不妥之处,指针指向的字符串常量也可以修改。
例如:

main()
{ char *p = "Welcomt to C";
*(p+2)='h';
puts(p);
}

显示的是:Wehcomt to C

那只是你的编译器允许了这种形为,并不代表别的编译器允许,因为语言标准没有定义这种行为,也就是说,各个编译器可以任意实现。比如,有的编译器会把该指针指向的字符串放在不可修改的代码段,此时运行就会发生段错误


2007-01-30 01:01
快速回复:数组与指针的区别,求助
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042706 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved