程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 指針-初學者問一個關於c語言結構體的問題

指針-初學者問一個關於c語言結構體的問題

編輯:編程綜合問答
初學者問一個關於c語言結構體的問題

結構體中指針和數組有什麼不同?

我定義了這麼一個結構體:
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]

最佳回答:


你的struct word結構中的word1成員只是char*類型,你想用它保存輸入單詞的話就要用malloc()分配一個內存塊來存儲你的單詞,另外單詞所在的行數賦給int line[0],那int line[1]到int line[999]你又空著干嘛。。還有我沒見過函數聲明寫在另一個函數裡面的

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved