關於VS2017中const char *不能用於初始化char *型別的實體的問題

小果沐雨發表於2020-06-06

在C語言中並沒有字串型別,如果想要給定字串,有兩種初始化方法:

1.使用字元陣列

例如:

char name1[] = "小明";

2.使用字元指標

例如:

char *name2 = "小明";

在VS2017中使用第一種方法初始化字串,當然是可以的。但是使用第二種方法,會提示錯誤。如何解決呢?

在這裡插入圖片描述

方法1:在char *前增加const

const char *name3 = "小明";

在這裡插入圖片描述
該方法將字串儲存在靜態資料區,資料不能修改,可以正常輸出,但是進行函式傳參會出錯。
想要使用指標,可以先用字元陣列初始化,然後用指標指向字元陣列。

	char name1[] = "小明";
	char *p = name1;

在這裡插入圖片描述

方法2:更改解決方案的屬性

在解決方案的屬性中找到C/C++的語言一項,將符合模式更改為否(專案預設為是)。
在這裡插入圖片描述
這是我們就會發現原來提示的錯誤消失了,而且這時可以進行函式傳參。
在這裡插入圖片描述

相關文章