访问嵌套体中内部结构的元素

时间:2013-11-21 10:20:42

标签: c structure

我们不能访问内部结构的元素吗?(在这种情况下, dept )。

当我尝试初始化dept结构的值时,我得到了最后提到的错误。

#include <stdio.h>
#include <string.h>
struct employe
{
    char name[10];
    int i;
    struct dept
    {
        char name[10];
        int uniq_num;
    }d;
}e;
int main()
{
strcpy(d.name, "CS");
strcpy(e.d.name, "Computer Science");
printf("The dept name: %s \n", d.name);
printf("Employee dept name: %s \n", e.d.name);
getchar();
return 0;
}

错误 -

"example9.c", line 18: undefined symbol: d
"example9.c", line 18: warning: left operand of "." must be struct/union object
"example9.c", line 18: cannot access member of non-struct/union object
"example9.c", line 20: warning: left operand of "." must be struct/union object
"example9.c", line 20: cannot access member of non-struct/union object

3 个答案:

答案 0 :(得分:1)

您(错误地?)使用d.name代替e.name例如第一次strcpy电话。

当您执行strcpy时,可以使用正确的语法在printfe.d.name调用中访问嵌套结构。

答案 1 :(得分:1)

正如我所提到的,如果不使用/ to结构的对象/指针,则无法访问内部元素。就像访问name变量一样,你必须使用e.name,类似于访问d变量,你必须要使用e.d

答案 2 :(得分:0)

最好分别定义结构:

struct dept
{
    char name[10];
    int uniq_num;
};

struct employe
{
    char name[10];
    int i;
    struct dept d;
}e;

然后您可以使用e.d.name,e.d.uniq_num访问e结构的d成员。