当前位置: 代码迷 >> C语言 >> 数组与指针的区别,求助
  详细解决方案

数组与指针的区别,求助

热度:227   发布时间:2007-01-23 15:25:00.0
数组与指针的区别,求助
char *a="1234",与char a[]="1234";有什么区别?
int main()
{
char a[]="12345",*p,*p1;
p=a;
*p=*(p+1); //在定义指针的时候这句不能执行,为什么?
return 0;
}
搜索更多相关的解决方案: 指针  

----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------
以下是引用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-1-23 19:43:00的发言:
楼主用的是什么编译器?

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


----------------解决方案--------------------------------------------------------
明白了,谢谢3楼大哥,我是用VC和Win-Tc编译的
----------------解决方案--------------------------------------------------------
怎么会不行,用VC LINUX GCC都可以通过。
char *a="1234";这样就不行


----------------解决方案--------------------------------------------------------
其实楼主的问题并不是编译器的问题,除了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

----------------解决方案--------------------------------------------------------
  相关解决方案