- 論壇徽章:
- 0
|
1. char *strcpy( char *to, const char *from );
我的理解是:strcpy時,to必須先申請好一段空間
例1:
main()
{
char* dst;
char* src = "hello";
strcpy(dst, src);
printf("src=%s\n",src);
printf("dst=%s\n",dst);
}
windows下運行沒有警告和錯誤,結(jié)果:
src=hello
dst=hello
請按任意鍵繼續(xù). . .
例2:
main()
{
char* src = "hello";
char* dst;
strcpy(dst, src);
printf("src=%s\n",src);
printf("dst=%s\n",dst);
}
windows下運行沒有警告和錯誤,但是卻彈出系統(tǒng)錯誤,提示“遇到問題需要關(guān)閉..“,也沒有輸出。
例3:
main()
{
char src[] = "hello";
char* dst;
strcpy(dst, src);
printf("src=%s\n",src);
printf("dst=%s\n",dst);
}
windows下運行沒有警告和錯誤,結(jié)果:
src=hello
dst=hello
請按任意鍵繼續(xù). . .
以上三例中,dst都是個野指針,也都沒有先申請好空間,為什么例1和例3可以正常輸出,而例2不能?
還有一點疑惑:教程中說:”未初始化的指針是非常危險的,所以應(yīng)總是在聲明指針時對它進行初始化“,可是看了很多高手的代碼,有時會對聲明的指針進行初始化,有時又就聲明個指針放哪,也不初始化,不知道他們這樣做是否妥當(dāng)? |
|