char str[]="Hello";
這個分配的字符串6個字節,但如果我寫用於指向字符串的char指針是否覆蓋內存?
char *str = "Hello";
將這個覆蓋數據,因爲它只是爲了保存1個字符?所以我問的是,當我聲明一個字符串,但不是初始化它(char str [12];),12字節保留在這裏或當我初始化它?如果他們在這裏得到初始化,這樣就意味着在:
char *str;
只有1個字節被保留,但是當我使其指向一個字符串,不在於覆蓋數據超越它的界限?
char str[]="Hello";
這個分配的字符串6個字節,但如果我寫用於指向字符串的char指針是否覆蓋內存?
char *str = "Hello";
將這個覆蓋數據,因爲它只是爲了保存1個字符?所以我問的是,當我聲明一個字符串,但不是初始化它(char str [12];),12字節保留在這裏或當我初始化它?如果他們在這裏得到初始化,這樣就意味着在:
char *str;
只有1個字節被保留,但是當我使其指向一個字符串,不在於覆蓋數據超越它的界限?
char *str;
不保留任何內容的數據。它是一個指針,大小可以容納一個內存地址。爲{ 'H', 'e', 'l', 'l', 'o', 0 }
char *str = "Hello";
6個字節已經已經由編譯器保存在某個地方。現在你正在製作一個變量來保存它的地址(指向它)。字符串內容不會被複制。
char str[]="Hello";
你說對了,它的6 char
小號
char *str = "Hello";
數組這是一個指向字符串常量。某處有一列6 char
s,而您的變量str
正指向它。
char *str;
這不保留任何東西,它的指針指向一個不確定的地方。當你把它指向一個字符串時,它指向一個其他地方的char
的數組,它不涉及拷貝。
可能重複[char a \ [\] =「string」之間的區別是什麼?和char * p =「string」;](http://stackoverflow.com/questions/9460260/what-is-the-difference-between-char-a-string-and-char-p-string) –
與你以前的問題,char * str =「Hello」;表達式中的轉換仍然不正確(編譯器會警告你) –