char数组不起作用:c ++

时间:2017-08-21 23:17:47

标签: c++ arrays char

脚本

#include <iostream>  
using namespace std;

int main()  
{  
    float nums[3];  
    nums[0]=1.5; 
    nums[1]=2.75; 
    nums[2]=3.25;                      
    const char* name[5]={"m", "i", "k", "e", "\0"};
    int coords[2][3]={{1, 2, 3}, {4, 5, 6}};     
    cout << "nums[0]: " << nums[0] << endl; 
    cout << "nums[1]: " << nums[1] << endl; 
    cout << "nums[2]: " << nums[2] << endl;
    cout << "name[0]: " << name[0] << endl; 
    cout << "Text String: " << name << endl; 
    cout << "coords[0][2]: " << coords[0][2] << endl;  
    cout << "coords[1][1]: " << coords[1][1] << endl; 
    return 0; 
}

输出:

nums[0]: 1.5  
nums[1]: 2.75  
nums[2]: 3.25  
name[0]: m  
Text String: 0xffffcbb0 
coords[0][2]: 3  
coords[1][1]: 5

问题:

如何制作&#34;文本字符串:&#34;说&#34;迈克&#34;
我试过char name [5],
我试过char * name [5];
请帮助
谢谢你 我是c ++的新手,不会判断

3 个答案:

答案 0 :(得分:3)

const char* name[5]={"m", "i", "k", "e", "\0"};

是指向字符的指针数组。您无意中创建了一个指向字符串而不是字符串的指针数组。

指针的

cout导致打印地址,除了指向已编写<<运算符的字符的指针以采用以null结尾的c样式字符串。

要解决此问题,您可以

1使用指向字符串文字的指针

const char* name="mike";

2使用字符数组

const char name[5]={'m', 'i', 'k', 'e', '\0'};

或3使用两者的组合

const char name[5]="mike";

作为一个额外的好处,因为在后两种情况下,初始化意味着数组的大小,你可以把它留下来,

const char name[]="mike";

,编译器会搞清楚。当你从“迈克”改为“亨利”时非常方便,因为你不必调整大小。

完成本练习后,请花些时间阅读std::string。尽可能使用它而不是C-Style字符串。它会为你节省大量的时间,血液和眼泪。

答案 1 :(得分:1)

const char name[5]={'m', 'i', 'k', 'e', '\0'};

您需要的是一系列char s。

使用单引号(')编写字符文字。如果您使用双引号("),则会获得字符串文字。

答案 2 :(得分:0)

使用您的符号,将双引号更改为单引号并删除星号:

const char name[5]={'m', 'i', 'k', 'e', '\0'};

或者您可以使用:

const char name[] = "mike";