字符串数组的初始化

ele7enjr 2009-09-13 10:26:07
这是题目:
在口袋中有红,黄,蓝,白,黑五种球很多个,每次从口袋中拿出不同颜色的三个,可以有几种可能取法,并且打印出每种组合的三种颜色,你可以帮我一下吗?

#include<iostream>
using namespace std;
void main()
{
int i,j,k;
char *a[5]={"red","yellow","blue","white","black"};
//我的问题关键是这里,为什么一定要是指针形式呢?这样char a[5]={"red","yellow","blue","white","black"};为什么就
//会出错???希望大家告诉我下原因,再告诉下我这是哪个方面的知识,我百度-字符串 初始化 指针都没找到这些例子
//目前学了谭浩强的c语言,在学郑莉的c++



for(i=0;i<5;i++)
for(j=i+1;j<5;j++)
for(k=j+1;k<5;k++)
{
if(i!=j&&i!=k&&j!=k)
cout<<a[i]<<'\t'<<a[j]<<'\t'<<a[k]<<endl;

}


}
...全文
46922 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
HIB904 2012-03-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kouwenlong 的回复:]
char *a[5]={"red","yellow","blue","white","black"};
字符串是字符的集合,用字符串指针标识.
char *p.//这里是字符串的集合,也可以是空串,一字符'\0'标识结束.用""表示.
char p.//这里就是单个字符.用''表示.
这里就是字符指针的问题,好好看看字符那章,还有指针.
[/Quote]
如何给这样的数组赋值呢?
比如const char *labels[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
"11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23",
"24"};
我想要把此数组的值变为"0"到”"200"该怎样赋值?
HIB904 2012-03-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kouwenlong 的回复:]
char *a[5]={"red","yellow","blue","white","black"};
字符串是字符的集合,用字符串指针标识.
char *p.//这里是字符串的集合,也可以是空串,一字符'\0'标识结束.用""表示.
char p.//这里就是单个字符.用''表示.
这里就是字符指针的问题,好好看看字符那章,还有指针.
[/Quote]请问这样的数组该怎样初始化?比如:

const char *labels[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
"11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23",
"24"};
我想让这个数组的值为"0"到"200",该怎样赋值?
jkx01whg 2009-09-13
  • 打赏
  • 举报
回复
char *a[5]={"red","yellow","blue","white","black"};
字符串是字符的集合,用字符串指针标识.
char *p.//这里是字符串的集合,也可以是空串,一字符'\0'标识结束.用""表示.
char p.//这里就是单个字符.用''表示.


-------------
如果不用字符指针,就用string来解决:
#include <string>

//......
std::string a[5]={"red","yellow","blue","white","black"};
Dave888Zhou 2009-09-13
  • 打赏
  • 举报
回复
关键:

如果用char a[5],那数组a中每个元素都是char型(而不char*型),单个字符。那你想这样还能行吗:

char a[5]={"red","yellow","blue","white","black"};

这里每个元素是单个字符吗?

如果用char* a[5],那数组a中每个元素是一个char*型指针变量,指针可以指向一个字符串呀。比如 char* p="abcd"。当然这样不安全,最好用const char* p="abcd"。
yang_e_2009 2009-09-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ele7enjr 的回复:]
引用 1 楼 yang_e_2009 的回复:
那如果不想用指针应该这么搞??
[/Quote]

#include <string>

//......
std::string a[5]={"red","yellow","blue","white","black"};

aizibion 2009-09-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ele7enjr 的回复:]
引用 1 楼 yang_e_2009 的回复:
因为"red"相当于一个char指针而不是单个char


那如果不想用指针应该这么搞??
[/Quote]

不想用指针可以用string

string a[5] = {"red","yellow","blue","white","black"};

也可以用2维数组
char a[5][128] = {"red","yellow","blue","white","black"};
不过这时,你得颜色单词长度必须在一个范围内
ele7enjr 2009-09-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kouwenlong 的回复:]
char *a[5]={"red","yellow","blue","white","black"};
字符串是字符的集合,用字符串指针标识.
char *p.//这里是字符串的集合,也可以是空串,一字符'\0'标识结束.用""表示.
char p.//这里就是单个字符.用''表示.
这里就是字符指针的问题,好好看看字符那章,还有指针.

[/Quote]
谢谢了,我好好看看
cl383804490 2009-09-13
  • 打赏
  • 举报
回复
kouwenlong 2009-09-13
  • 打赏
  • 举报
回复
char *a[5]={"red","yellow","blue","white","black"};
字符串是字符的集合,用字符串指针标识.
char *p.//这里是字符串的集合,也可以是空串,一字符'\0'标识结束.用""表示.
char p.//这里就是单个字符.用''表示.
这里就是字符指针的问题,好好看看字符那章,还有指针.
ele7enjr 2009-09-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yang_e_2009 的回复:]
因为"red"相当于一个char指针而不是单个char

[/Quote]
那如果不想用指针应该这么搞??
yang_e_2009 2009-09-13
  • 打赏
  • 举报
回复
因为"red"相当于一个char指针而不是单个char

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧