结构体中指针和数组有什么不同?
我定义了这么一个结构体:
struct word
{
char*word1;
int line[1000];
};
struct word danci
然后用一个函数getword读取输入并给该结构体赋值,具体是怎么样就不写了
getword(danci,100);
然后
printf("%d",danci.line[0]);
但是这句报错了,原因是struct word danci没有初始化
但是我把结构体中int line[1000] 改为int*line再给line分配一个地址 则不会报错。
请问这是为什么????
以下是getword函数的代码:
int getword(struct word word,int lim)
{
int c,getch(void);
void ungetch(int);
char*w=word.word1;
static int nline=1;
while((c=getch())==' '||c=='\t')
;
if(c!=EOF)
*w++=c;
if(c=='\n')
++nline;
if(nline>MAXLINE)
{
printf("只能处理1000行以内的单词\n");
return EOF;
}
if(!isalpha(c))
{
*w='\0';
return c;
}
for(;--lim>0;w++)
if(!isalnum(*w=getch()))
{
*(word.line)=nline;
ungetch(*w);
break;
}
*w='\0';
return word.word1[0];
}
getword用来读取输入中的单词,将其赋给结构体struct word中的char*word1,把单词所在的行数赋给int line[0]