读书人

请教这两种数组的声明有什么区别

发布时间: 2012-08-16 12:02:15 作者: rapoo

请问,这两种数组的声明有什么区别?
#include
void main()
{
char a = 1;
char c[] = "1234567890";
char *p ="123123123";
a = c[1];
a = p[1];
return;
}

程序员面试宝典上说:
char c[] = "1234567890";
char *p ="1234567890";
1234567890是在运行时刻赋值的;
而123123123是在编译时就确定的;


为什么会有这区别呢?小弟菜鸟,希望大牛不吝赐教

[解决办法]

探讨

引用:
#include
void main()
{
char a = 1;
char c[] = "1234567890";
char *p ="123123123";
a = c[1];
a = p[1];
return;
}

程序员面试宝典上说:
char c[] = "1234567890";
char *p ="1234567890";
1……

[解决办法]
程序运行时分有运行空间, 存在生命周期, 想想, 要是所有代码都在编译时确定, 工程一大, 会有多少代码文件空间?当然要别运行边销毁些数据了,这就是为什么产生了作用域和生命周期术语由来.
[解决办法]
一个是数组变量,其内容可以改变。
一个是字符串指针,其指向一个字符串常量,这个字符串常量的内容不可以改变。

读书人网 >C语言

热点推荐