如果你覺得需要使用realloc()——或者要做更多——考慮使用標準庫中的vector。例如:
// 從輸入中將詞讀取到一個字符串vector中
vector<string> words;
string s;
while (cin>>s && s!=".") words.push_back(s);
vector會視需要自動增長。
更多的例子與討論,參見我的文章《將標準C++作為一種新的語言來學習》(Learning Standard C++ as a New Language),你可以在本人著作列表(my publications list)中下載到它。
我為什么必須使用一個造型來轉換*void?
在C語言中,你可以隱式地將*void轉換為*T。這是不安全的?紤]一下:
#include<stdio.h>
int main()
{
char i = 0;
char j = 0;
char* p = &i;
void* q = p;
int* pp = q; /* 不安全的,在C中可以,C++不行 */
printf("%d %d\n",i,j);
*pp = -1; /* 覆蓋了從i開始的內存 */
printf("%d %d\n",i,j);
}
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/