[問題] VC裡使用struct的問題

看板C_and_CPP作者 (本帳號已停止使用)時間15年前 (2009/04/23 19:24), 編輯推噓4(4022)
留言26則, 8人參與, 最新討論串1/1
 請問一下喔~  底下這個是 turbo C書裡的範例,我照著輸入到 VC中編譯,  會出現這樣的錯誤訊息.. struct.cpp(10) : error C2236: unexpected 'struct' 'person'  不知道該怎麼修改才可以使用呢? #include<stdio.h> void main() { struct person { char *name; int age; } struct person p; scanf("%s",p.name); scanf("%d",&p.age); printf("NAME: %s AGE: %d",p.name,p.age); } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.117.77

04/23 19:27, , 1F
;
04/23 19:27, 1F

04/23 19:31, , 2F
可以了~謝謝樓上~:) 不過改完後,改出現..
04/23 19:31, 2F

04/23 19:31, , 3F
local variable 'p' used without having been initialize
04/23 19:31, 3F

04/23 19:33, , 4F
它是說沒有初始化????
04/23 19:33, 4F

04/23 19:47, , 5F
struct person p; p沒有給定初始值
04/23 19:47, 5F

04/23 19:47, , 6F
p.name 指標未初始化,他沒有指到有效的記憶體位置。
04/23 19:47, 6F

04/23 19:47, , 7F
直接寫入可能會 segmentation fault
04/23 19:47, 7F

04/23 19:53, , 8F
囧..那請問一下,這樣的話要怎麼更改呢?假使不想把name改
04/23 19:53, 8F

04/23 19:54, , 9F
成name[],還是想保持 *name的話..>.<
04/23 19:54, 9F

04/23 20:12, , 10F
自回..在struct person p;下面加一行p.name=new char [10]
04/23 20:12, 10F

04/23 20:13, , 11F
這樣就可以了,可是卻必須指定大小,那這樣就跟在struct裡指
04/23 20:13, 11F

04/23 20:13, , 12F
事先指定的意思差不多了..XDDDD
04/23 20:13, 12F

04/23 21:21, , 13F
還是有差啦, 用 new 的在用到時才會花掉這些空間
04/23 21:21, 13F

04/23 21:23, , 14F
明明就在struct裡直接指定大小差很多吧....
04/23 21:23, 14F

04/23 21:23, , 15F
程式可以在run time去計算或等user輸入才覺得要
04/23 21:23, 15F

04/23 21:24, , 16F
new 給 *name 多大的空間, 是可以彈性指定大小的....
04/23 21:24, 16F

04/23 21:24, , 17F
如果要用不需要指定大小的, 也許你要自己實作類似
04/23 21:24, 17F

04/23 21:25, , 18F
vector的東西, 或者直接拿現成的來用....@_@"
04/23 21:25, 18F

04/23 23:14, , 19F
不要急著學new,現在記憶體使用沒什麼限制
04/23 23:14, 19F

04/23 23:15, , 20F
固定大小陣列不會讓你電腦爆炸
04/23 23:15, 20F

04/24 07:28, , 21F
但那是個好習慣阿..... 我學長就爆過- -
04/24 07:28, 21F

04/24 10:53, , 22F
爆了就有血淋淋的教訓,學新的東西才會深刻 XD
04/24 10:53, 22F

04/24 11:12, , 23F
XD 原來是這樣,所以還是要指定記憶體大小會好一點..XD
04/24 11:12, 23F

04/24 11:12, , 24F
因為是初學者,所以還沒有碰到new的東西..^^||
04/24 11:12, 24F

04/24 16:09, , 25F
也不全如此啦!這只是我的看法
04/24 16:09, 25F

04/24 16:10, , 26F
一開始就習慣new的使用也沒什麼不好,學java/.NET也好接
04/24 16:10, 26F
文章代碼(AID): #19y500Yv (C_and_CPP)