注册 登录
编程论坛 C++教室

C++ 指针问题

超超超1 发布于 2014-10-26 22:15, 9056 次点击
问题1:
int *a=5;
这样写到底对不对?


问题2:
char *digitString[]={"zero","one","two","three","four","five","six","seven","eight","nine"};
这样的表示该怎么解释?是指针数组吗?还是二维数组?
9 回复
#2
哆啦安梦2014-10-26 22:23
问题一:应该不对,指针初始化的时候应该赋地址,5是整数不能转换成地址
问题二:可以看成字符数组的数组,也就是二维数组
#3
stop12042014-10-26 23:10
类型不同,    a类型为(int *)     数字5类型为 int
问题2要赋值数组指针.   即 你的内容必须为地址类型. 不能用字符串,必须是指针
#4
超超超12014-10-27 08:47
回复 3 楼 stop1204
问题1我理解。但问题2,这样写是没问题的,vs里编译是通过的,digitString[0]="one"。我本意也觉得这样改初始化一组指针,但这样赋值一串字符串算什么?是把字符串的地址赋值给它们吗?
#5
wp2319572014-10-27 08:55
以下是引用超超超1在2014-10-26 22:15:56的发言:


问题2:
char *digitString[]={"zero","one","two","three","four","five","six","seven","eight","nine"};
这样的表示该怎么解释?是指针数组吗?还是二维数组?


这就是字符串数组    数组每个元素都是存储的字符串指针  指向内容非别是。。。。。。。

也许这样声明 更容易理解char*  digitString[]={"zero","one","two","three","four","five","six","seven","eight","nine"};
#6
wp2319572014-10-27 08:58
至于第一个  可以这样声明   int* t=(int*)5;  但是毫无意义  除非你设定的数值是可以访问的(具有读写权限)
#7
城府2014-10-27 09:36
回复 楼主 超超超 1
我是新手   能教我编程的知识吗
#8
超超超12014-10-27 09:40
回复 7 楼 城府
你看我问的问题很高端吗……
#9
超超超12014-10-27 09:46
以下是引用超超超1在2014-10-27 08:47:02的发言:

问题1我理解。但问题2,这样写是没问题的,vs里编译是通过的,digitString[0]="one"。我本意也觉得这样改初始化一组指针,但这样赋值一串字符串算什么?是把字符串的地址赋值给它们吗?



我自己理解错了,digitString[0]内存储的是字符串"one"的指针,所以可以这样输出这个字符串:printf("%s",digitString[0]);(或者cout<<digitString[0];)
#10
zklhp2014-10-27 14:37
C++应该多用引用和容器 少用指针和数组
1