我有這個奇怪的問題。我查看了其他 Stack Overflow 帖子,但他們正在處理不會對我的代碼產生任何影響的大型陣列。他們已經推薦過,malloc()但在這么小的東西上它是沒用的。
我正在用 C 練習,一個簡單的事情是這樣的:
int main()
{
char* things[] = {"test1\n", "test2\n", "test3\n"};
for (long unsigned int i = 0; i < sizeof(things) - 1; i )
{
printf(things[i]);
}
return 0;
}
給出分段錯誤。不過,它實際上最終會列印 test1、test2、test3。完成后,它會出現分段錯誤。我究竟做錯了什么?
uj5u.com熱心網友回復:
的實際價值sizeof(things)會讓你大吃一驚。找出來。
正如用戶斯塔克解釋的那樣:
sizeof 是事物的總大小(以位元組為單位),可能是 3*8 或 24。
更明確地說,它不是您的準字串中的字符數,而是您環境中指標的大小乘以 3。
所以解決方案是將總數除以一的大小:
sizeof(things)/sizeof(things[0]).
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/348675.html
下一篇:檢查矩陣中相同的相鄰數字
