我已經用C編寫了一個簡單的程序。一個程序輸入一個字符串並將其與長度一起顯示。字符數組是C動態的嗎?
#include<stdio.h>
int main()
{
char a[4];
printf("Enter the name : ");
gets(a);
printf("\nThe name enterd is : %s",a);
printf("\nLength of string is : %d",strlen(a));
getch();
return 0;
}
該程序不包含警告或錯誤。
在運行時,我輸入值「melwinsunny」作爲輸入。沒有錯誤,結果顯示如下:
Enter the name : melwinsunny
The name entered is : melwinsunny
length of string is : 11
爲什麼會這樣?我已經聲明瞭長度爲4的字符數組(char a [4])。請解釋。
這是否意味着字符數組是動態的?
不,這意味着你只是執行了緩衝區溢出。 C *不握住你的手*。如果有的話,它直接瞄準你的腳,只是等着你拉動扳機。 –
它會覆蓋別的東西。在這種情況下可能未使用的內存,但嘗試像這樣:'int i1 = 5; char a [4]; int i2 = 6; printf(「i1,i2是%i,%i \ n」,i1,i2);得到的(a); printf(「i1,i2,a是%i,%i,%s \ n」,i1,i2,a);'。這是未定義的行爲,這意味着沒有任何保證,它可能取決於你的編譯器和操作系統(或者它可能會導致惡魔飛出你的鼻子 - 這在實踐中是不太可能的) – immibis