我有一个带指针的结构..我只是在徘徊如何用指针打印结构的值,所以我写了一个代码像
#include <stdio.h>
#include <string.h>
typedef struct Books
{
char title[0];
} Book,*andi;
int main( )
{
Book book;
Book *andi;
strcpy(book.title, "avi");
printf( "Book title : %s\n", andi->title);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试这个代码它没有给我一个错误,但产生一个空结果而不是"avi"..你能告诉我为什么会发生这种情况??
任何帮助都会很棒..谢谢
你必须初始化指针andi.例如,尝试以下操作
int main( )
{
Book book;
Book *andi = &book;
strcpy(book.title, "avi");
printf( "Book title : %s\n", andi->title);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
并且阵列的大小不应为零.至少改变结构定义
typedef struct Books
{
char title[10];
} Book,*andi;
Run Code Online (Sandbox Code Playgroud)
以与typedef名称相同的方式命名变量也不是一个好主意.虽然此代码有效
andi andi = &book;
Run Code Online (Sandbox Code Playgroud)
尽管如此,最好将相应的typedef命名为例如以下方式
typedef struct Books
{
char title[10];
} Book,*PBook;
Run Code Online (Sandbox Code Playgroud)
在这种情况下你可以写
PBook andi = &book;
Run Code Online (Sandbox Code Playgroud)