| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 879 人关注过本帖
标题:数组与指针的区别,求助
只看楼主 加入收藏
blackbrod
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2006-10-24
收藏
 问题点数:0 回复次数:11 
数组与指针的区别,求助
char *a="1234",与char a[]="1234";有什么区别?
int main()
{
char a[]="12345",*p,*p1;
p=a;
*p=*(p+1); //在定义指针的时候这句不能执行,为什么?
return 0;
}
搜索更多相关主题的帖子: 指针 
2007-01-23 15:25
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 

象这样???
int a=a+1;这么定义么


嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2007-01-23 17:24
tyc611
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-1-21
收藏
得分:0 
以下是引用blackbrod在2007-1-23 15:25:00的发言:
char *a="1234",与char a[]="1234";有什么区别?
int main()
{
char a[]="12345",*p,*p1;
p=a;
*p=*(p+1); //在定义指针的时候这句不能执行,为什么?
return 0;
}

指针与数组的区别比较微秒,就提几点吧:
char ca[] = "Hello, world";
char *p = "Welcomt to C";
1. 在上面的代码中,ca是一个字符数组,你可以对数组元素进行修改,而指针p指向一个字符串常量,它是不可修改的(如果对其修改,这种行为是未定义的);
2. 数组名a是一个标号而已,不能对其进行修改(其根本就不是一个对象),而指针变量p是一个可修改的对象
3. 数组名在任何需要指针的地方可以自动转换成指针
如此云云,更多请参考:《数组和指针》


2007-01-23 18:36
烟雨平生
Rank: 1
等 级:新手上路
帖 子:253
专家分:0
注 册:2005-11-20
收藏
得分:0 
楼主用的是什么编译器?

君子之道,五日一御
2007-01-23 19:43
zhufeifei
Rank: 1
等 级:新手上路
威 望:2
帖 子:402
专家分:0
注 册:2006-8-11
收藏
得分:0 
支持三楼!

在不断的拼搏与进取中,定能创造一片天地!
2007-01-23 21:54
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
收藏
得分:0 
顶二楼!
~~~~~~~~~~~~~

~~我的明天我知道~~
2007-01-23 22:30
tyc611
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-1-21
收藏
得分:0 
以下是引用烟雨平生在2007-1-23 19:43:00的发言:
楼主用的是什么编译器?

编译器是GCC
IDE用MinGW,Linux环境用Cygwin,有时也用VC(做图形窗口需要用MFC)
用时,还需要用虚拟机下的Linux中的GCC,因为这个版本比较新,某些C++特性只能这个验证


2007-01-23 23:37
blackbrod
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2006-10-24
收藏
得分:0 
明白了,谢谢3楼大哥,我是用VC和Win-Tc编译的
2007-01-24 09:40
lindongxiao
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-1-28
收藏
得分:0 
怎么会不行,用VC LINUX GCC都可以通过。
char *a="1234";这样就不行

2007-01-28 16:47
hiaod
Rank: 1
等 级:新手上路
威 望:1
帖 子:66
专家分:0
注 册:2007-1-25
收藏
得分:0 
其实楼主的问题并不是编译器的问题,除了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-28 18:31
快速回复:数组与指针的区别,求助
数据加载中...
 
   



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

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