c++指针数组初始化问题

[复制链接]
查看11 | 回复5 | 2017-9-10 19:55:13 | 显示全部楼层 |阅读模式
char *p[]={"aaa","bbb"};
这样在定义p的时候完成了初始化
那int *p1[]={1,2}
为什么不可以?
如何在定义p1的时候进行初始化?
还是只能在定义后通过循环进行?

回复

使用道具 举报

千问 | 2017-9-10 19:55:13 | 显示全部楼层
指向整型数的指针数组 int *p1[] = {NULL, NULL}; 是没有问题的。原因在于,你申请指向字符的指针数组,数组中的元素是字符串,指针数组保存的是字符串首地址;而对于其他常量,你无法把地址给回,自然无法给指针数组赋值。而我给的NULL是一个空指针,就可以赋给指针数组了。指针数组,元素只能保存指针...
回复

使用道具 举报

千问 | 2017-9-10 19:55:13 | 显示全部楼层
直接写在程序中的字符串,经过编译器处理以后是一个char*指针,直接写在程序中的数字,或者字符('a'、'b')是即时数直接送CPU处理。{"aaa","bbb"}是字符串,所以编译器经过了编译器以后就变成了char *临时变量1="aaa"char *临时变量2="bbb"所以char *p[]={"aaa","bbb"};变成 cha...
回复

使用道具 举报

千问 | 2017-9-10 19:55:13 | 显示全部楼层
char *p[]={"aaa","bbb"};是定义字符型的指针数组,含有两个字符指针,字符型指针的初始化可以允许在定义时候直接赋值,意思是使指针指向"aaa"和"bbb" 两个字符串的空间,而int *p1[]={1,2},指向整型数的指针不能这样初始化...
回复

使用道具 举报

千问 | 2017-9-10 19:55:13 | 显示全部楼层
这是C语言的不严谨的地方。char *p[]={"aaa","bbbb"}; 相当声明了有两个元素的指针数组。"aaa" "bbbb" 是两个字符串常量,也分配了存放单元--常数区。初始化,就是两个指针分别指向两个字符串常量的首地址。不支持 int *p1[]={1,2}。 初始化,要么赋别的已声明了的变量地址,要么动态分配单元。...
回复

使用道具 举报

千问 | 2017-9-10 19:55:13 | 显示全部楼层
#include void main() { int b[]={1,2,3}; int *p=b; char *m[]={"aaa","bbb"}; cout<<p[0]<<endl; cout<<m[0]<<endl; } 这是我在vc++ 6.0上实验过的。我们老师曾经说过,指针和数字是相通...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行