字符串数组的初始化

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

#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;

}


}

11 个解决方案

#1


因为"red"相当于一个char指针而不是单个char

#2


引用 1 楼 yang_e_2009 的回复:
因为"red"相当于一个char指针而不是单个char

那如果不想用指针应该这么搞??

#3


char *a[5]={"red","yellow","blue","white","black"}; 
字符串是字符的集合,用字符串指针标识.
char *p.//这里是字符串的集合,也可以是空串,一字符'\0'标识结束.用""表示.
char p.//这里就是单个字符.用''表示.
这里就是字符指针的问题,好好看看字符那章,还有指针.

#4


#5


引用 3 楼 kouwenlong 的回复:
char *a[5]={"red","yellow","blue","white","black"};
字符串是字符的集合,用字符串指针标识.
char *p.//这里是字符串的集合,也可以是空串,一字符'\0'标识结束.用""表示.
char p.//这里就是单个字符.用''表示.
这里就是字符指针的问题,好好看看字符那章,还有指针.

谢谢了,我好好看看

#6


引用 2 楼 ele7enjr 的回复:
引用 1 楼 yang_e_2009 的回复:
因为"red"相当于一个char指针而不是单个char


那如果不想用指针应该这么搞??


不想用指针可以用string

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

也可以用2维数组
char a[5][128] = {"red","yellow","blue","white","black"}; 
不过这时,你得颜色单词长度必须在一个范围内

#7


引用 2 楼 ele7enjr 的回复:
引用 1 楼 yang_e_2009 的回复:
那如果不想用指针应该这么搞??

#include <string>

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

#8


   关键:
  
   如果用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"。

#9


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"}; 

#10


引用 3 楼 kouwenlong 的回复:
char *a[5]={"red","yellow","blue","white","black"}; 
字符串是字符的集合,用字符串指针标识.
char *p.//这里是字符串的集合,也可以是空串,一字符'\0'标识结束.用""表示.
char p.//这里就是单个字符.用''表示.
这里就是字符指针的问题,好好看看字符那章,还有指针.
请问这样的数组该怎样初始化?比如:
 

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",该怎样赋值?

#11


引用 3 楼 kouwenlong 的回复:
char *a[5]={"red","yellow","blue","white","black"}; 
字符串是字符的集合,用字符串指针标识.
char *p.//这里是字符串的集合,也可以是空串,一字符'\0'标识结束.用""表示.
char p.//这里就是单个字符.用''表示.
这里就是字符指针的问题,好好看看字符那章,还有指针.

如何给这样的数组赋值呢?
比如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"该怎样赋值?

#1


因为"red"相当于一个char指针而不是单个char

#2


引用 1 楼 yang_e_2009 的回复:
因为"red"相当于一个char指针而不是单个char

那如果不想用指针应该这么搞??

#3


char *a[5]={"red","yellow","blue","white","black"}; 
字符串是字符的集合,用字符串指针标识.
char *p.//这里是字符串的集合,也可以是空串,一字符'\0'标识结束.用""表示.
char p.//这里就是单个字符.用''表示.
这里就是字符指针的问题,好好看看字符那章,还有指针.

#4


#5


引用 3 楼 kouwenlong 的回复:
char *a[5]={"red","yellow","blue","white","black"};
字符串是字符的集合,用字符串指针标识.
char *p.//这里是字符串的集合,也可以是空串,一字符'\0'标识结束.用""表示.
char p.//这里就是单个字符.用''表示.
这里就是字符指针的问题,好好看看字符那章,还有指针.

谢谢了,我好好看看

#6


引用 2 楼 ele7enjr 的回复:
引用 1 楼 yang_e_2009 的回复:
因为"red"相当于一个char指针而不是单个char


那如果不想用指针应该这么搞??


不想用指针可以用string

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

也可以用2维数组
char a[5][128] = {"red","yellow","blue","white","black"}; 
不过这时,你得颜色单词长度必须在一个范围内

#7


引用 2 楼 ele7enjr 的回复:
引用 1 楼 yang_e_2009 的回复:
那如果不想用指针应该这么搞??

#include <string>

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

#8


   关键:
  
   如果用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"。

#9


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"}; 

#10


引用 3 楼 kouwenlong 的回复:
char *a[5]={"red","yellow","blue","white","black"}; 
字符串是字符的集合,用字符串指针标识.
char *p.//这里是字符串的集合,也可以是空串,一字符'\0'标识结束.用""表示.
char p.//这里就是单个字符.用''表示.
这里就是字符指针的问题,好好看看字符那章,还有指针.
请问这样的数组该怎样初始化?比如:
 

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",该怎样赋值?

#11


引用 3 楼 kouwenlong 的回复:
char *a[5]={"red","yellow","blue","white","black"}; 
字符串是字符的集合,用字符串指针标识.
char *p.//这里是字符串的集合,也可以是空串,一字符'\0'标识结束.用""表示.
char p.//这里就是单个字符.用''表示.
这里就是字符指针的问题,好好看看字符那章,还有指针.

如何给这样的数组赋值呢?
比如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"该怎样赋值?