我们不能访问内部结构的元素吗?(在这种情况下, 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
答案 0 :(得分:1)
您(错误地?)使用d.name
代替e.name
例如第一次strcpy
电话。
当您执行strcpy
时,可以使用正确的语法在printf
和e.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成员。