博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C语言字符串定义(数组&指针)

Posted on 2019-02-20 10:44  惊鸿BoltLi  阅读(4088)  评论(0编辑  收藏  举报
 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结果如下: