为什么struct中的char变量需要设置为指针变量才有效?

时间:2014-02-26 17:48:24

标签: c pointers

struct telephone
{
    char *name;
    int number;
};

int main()
{
    struct telephone index;
    index.name = "Jane Doe";
    index.number = 12345;
    printf("Name: %s\n", index.name);
    printf("Telephone number: %d\n", index.number);

    return 0;
}

我能知道为什么char类型需要一个指针才能工作,但int不需要吗?

4 个答案:

答案 0 :(得分:1)

如果这是你想要的,你只需char*。此处的名称指向char的序列。如果您希望struct包含单个char,则可以这样做。

答案 1 :(得分:0)

当然,您可以将char放入struct。当然,在这种情况下,它只是char,而不是指向char的指针(即C中的string)。

例如:

struct telephone
{
    char name;                            // a char
    int number;
};

int main()
{
    struct telephone index;
    index.name = 'a';                    // assign a char
    index.number = 12345;
    printf("Name: %c\n", index.name);    // print a char
    printf("Telephone number: %d\n", index.number);

    return 0;
}

答案 2 :(得分:0)

该角色需要是一个指针,因为它被用作“字符串”。这就是字符串声明在C中的样子。指针指向字符串中的第一个字符。向指针添加+1将为您提供C-String中的下一个字符。

答案 3 :(得分:0)

你也可以骗过。但它只是一个角色。 char *是一个字符串(把它想象为字符数组) 像int *就像一个int数组。

指针指向字符串的第一个字符。