〉〉指针与数组的区别????? 用指针的话要先new 出空间的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 第一种的内存是静态分配的,共占用7个字节;第二种的内存有两类,数组的内存在栈中,7个字节,常量字符的内存静态分配,6个字节。值得注意的是:数组元素szName[6]的值未知,应如下初始化:char szName[7] = {'M','a','r','i','n','a', 0}; char* szName="Marina";这种方式应该避免使用这种方式使得szName指向的内容不可更改,而且如果继续写一句szName="test";后,原来szName指向的内存没有释放char szName[7]={'M','a','r','i','n','a'};可以更改里面的内容 数组为常量指针,并且在编译时分配空间char a[100]="abcdsafasf";char *pa = "afbdsdfas";由于a为常量,所以 a = "asfasfdas";//出错而 pa = "asfas"; //正确pa = new char[100];//正确若定义char const* pca = "afasfasf";则他与char ac[]="afasfasf";用法一样;pca = new char[100];//错,此时pca只能指向固定的地址,不能指向别处pca[3] = 'a';//正确ac[3] = 'a';//正确 第一种是一个字符串啊!szName[6]=='\0'第二种是字符,szName[6]未知,其实第一种等于static char string[]="Marina";char *szName=string;编译后,该语句不产生语句。但从程序开始运行到结束一直在内存里。在全局堆里。第二种则在程序每次运行到此的时候,对szName负值。该语句产生语句,但在该块结束时将被释放,在堆栈里。 VC 古老的问题 [Help]求VLC media player的源代码。。。 这是因为没有声明struct么? 求助!紧! 有关VC编译器的几个疑问? ATl组件注册 控件无法响应wm_create事件 为什么!(关于HBITMAP) dlldatax.c dlldatax.h有什么作用? 关于MFC基础问题(显示一个消息) mfc还有戏吗? !!!!!!关于COM库和进程外组件!!!!!!
第二种的内存有两类,数组的内存在栈中,7个字节,常量字符的内存静态分配,6个字节。值得注意的是:数组元素szName[6]的值未知,应如下初始化:
char szName[7] = {'M','a','r','i','n','a', 0};
这种方式使得szName指向的内容不可更改,而且如果
继续写一句szName="test";后,原来szName指向的内存没有释放
char szName[7]={'M','a','r','i','n','a'};可以更改里面的内容
char a[100]="abcdsafasf";
char *pa = "afbdsdfas";由于a为常量,所以
a = "asfasfdas";//出错
而
pa = "asfas"; //正确
pa = new char[100];//正确若定义
char const* pca = "afasfasf";
则他与
char ac[]="afasfasf";
用法一样;
pca = new char[100];//错,此时pca只能指向固定的地址,不能指向别处
pca[3] = 'a';//正确
ac[3] = 'a';//正确
第二种是字符,szName[6]未知,
其实第一种等于static char string[]="Marina";char *szName=string;
编译后,该语句不产生语句。但从程序开始运行到结束一直在内存里。在全局堆里。
第二种则在程序每次运行到此的时候,对szName负值。该语句产生语句,
但在该块结束时将被释放,在堆栈里。