1. 程式人生 > >str[]與*str的區別

str[]與*str的區別

#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;
}

改成這樣編譯器就不再報錯了,但是此字串無法修改,該指標指向一個常亮字串。