1 /***************************************************************************** 2 * @brief : 字符串定義方法總結 指針 字符數組 3 * @author : BoltLi 4 * @date : 2019/2/20 10:20 5 * @version : ver 1.0 6 * @inparam : 7 * @outparam : 8 *****************************************************************************/ 9 #include<stdio.h> 10 int main() 11 { 12 //char *s; s = {"abc"}; //錯誤方法,錯誤原因:不可以直接設置將字符數組賦值給指針,但可以采取下面的將字符串賦值給指針,或者定義指針時直接賦值字符串 13 14 //char *s; s = "abc"; //1)定義后再將字符串賦值給指針(對比上面少了一對大括號‘{}’) 15 16 //char *s = {"abc"}; //2)定義指針時直接賦值字符串(‘{}’大括號有無均可) 17 18 //char s[] = {"abc"}; //3)字符數組方法 19 //char s[4] = "abc"; //3)包含結束標識符一共需要4個,所以這里定義為s[4],一般定義比字符個數多較多就可以 20 21 //4)要使s指向一個字符串,還可以采取下面的方法: 22 //char *s; 23 //char str[] = "abc"; s = str; 24 //先將字符串存於字符數組中,然后將數組名賦給字符指針(數組名代表數組首地址,定義數組是為其分配確定的地址) 25 26 printf("%c\n",s[2]); //只輸出c 27 printf("%s", s); // 整體輸出字符串s,顯示為abc 28 while(1); 29 return 0; 30 }
對於VS2010,上述操作沒問題,而對於VS2017,不支持上述字符串的操作,會報錯如下:
使用VS2017,結果如下:
使用VS2010結果如下: