请教,这两种数组的声明有什么区别
请问,这两种数组的声明有什么区别?#includevoid main(){char a 1char c[] 1234567890char *p 12
请问,这两种数组的声明有什么区别?
#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是在编译时就确定的;
为什么会有这区别呢?小弟菜鸟,希望大牛不吝赐教
[解决办法]
[解决办法]程序运行时分有运行空间, 存在生命周期, 想想, 要是所有代码都在编译时确定, 工程一大, 会有多少代码文件空间?当然要别运行边销毁些数据了,这就是为什么产生了作用域和生命周期术语由来.
[解决办法]一个是数组变量,其内容可以改变。
一个是字符串指针,其指向一个字符串常量,这个字符串常量的内容不可以改变。