str[]與*str的區別
阿新 • • 發佈:2018-12-20
#include<stdio.h>
int main() {
char pstr[] = "strins";
*(pstr + 1) = 'a';
printf("%s\n", pstr);
return 0;
}
輸出結果是sarins 此種方式,陣列的長度由編譯器確認, []裡面不填資料 “abc”實質是一個常量,初始化時將其賦值(拷貝)給str 除非在初始化階段,否則不能這樣賦值! 此後可以對str進行修改,如:str[2]=‘a’;
#include<stdio.h>
int main() {
char *pstr = "strins";
*(pstr + 1) = 'a';
printf("%s\n", pstr);
return 0;
}
編譯報錯 E0144 “const char *” 型別的值不能用於初始化 “char *” 型別的實體 C2440 “初始化”: 無法從“const char [7]”轉換為“char *”
#include<stdio.h>
int main() {
const char *pstr = "strins";
printf("%s\n", pstr);
return 0;
}
改成這樣編譯器就不再報錯了,但是此字串無法修改,該指標指向一個常亮字串。