
在系統控制臺里呼叫main函式,運行后怎么會出現亂碼????
uj5u.com熱心網友回復:
需要分析一下argv的型別,型別是char *[];即指標陣列,從樓主的用例上看,樓主的argv陣列長度是5.那么需要了解一下argv++;是偏移多少個位元組,樓主想實作argv[0]->argv[1]->argv[2]。。。這樣偏移吧,偏移的量是sizeof(argv[0]);
但是argv++;那就是偏移5 * sizeof(argv[0]);已經越界了。所以顯示亂碼是應為越界是未定義行為;
char *p = argv[0];
while (argc > 0) {
p++;
printf("%s\n", p); //這兒也不應該是argv呢,也應該是argv[0]orargv[i]呢
argc--;
}
int i = 0;
while (i < argc) {
printf("%s\n", argv[i]);
i++;
}
供參考~
uj5u.com熱心網友回復:
也就是說系統呼叫的時候不會把argv的首地址傳給main函式是吧,還是得在程式中定義一個指標指向argv的首地址對吧uj5u.com熱心網友回復:
argv相當于&argv[i],要實作樓上結果,需要printf(“%s\n”,*argv);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/27672.html
標籤:C語言
下一篇:matlab關于未定義函式問題
