//错误示例
对于char**,是一个二维的char数组,t[0]可以看做是第一个字符串
但是由于t未被初始化,因此,不能保证t[0]存在,因此在初始化char**的时候,必须要用char*t[4]这样,以保证t[0]存在
#include "pch.h"
#include <stdio.h>
#include<string.h>
int len(char*a) {
printf("%s\n", a);
return strlen(a);
int main()
char*t[4];
char a[4];
const char*c = "asd";
strcpy_s(a, c);
printf("%d\n", len(a));
t[0] = a;
printf("%s", t[0]);
return 0;
//正确示例
而对于char*a的初始化,同理,你不用char a[4]告诉他有4个,就不能给他赋值
同时这里要注意,char*a="ttt"这是不可以的,因为"ttt"是const char*,是不能修改的
而如果是char a[4]="ttt"是可以的,因为他知道了a的大小,因此可以首先创建大小为4的char数组,然后将“ttt”赋值进去,你如果不告诉他大小,自然不能就这么给他!
最后,如果要把一个const char*的字符串赋给char*,不能用=号,只能用strcpy!!!
#include "pch.h"#include &lt;stdio.h&gt;#include&lt;string.h&gt;int len(char*a) { printf("%s\n", a); return strlen(a);}int main(){ char**t; char a[4]; const char*c = "asd"; strcpy_s(a, ...
本文章仅为个人学习,如有错误之处请指正。
C标准库-注释-条件编译
C标准库在C++中可用,由x.h --> cx 如:string.h --> cstring stdio.h --> cstdio math.h --> cmath,有部分不变,如malloc.h
/*……*/ 快注释 // 行注释
条件编译,如
#if 1
#endif
#if 0 …… #else …… #endif
#if 1 …… #elif …… #elif ……#endif
1、全局静态变量:
用法:在全局变量前加上关键字static,全局变量就定义成一个全局静态变量。 static int temp;
内存中的位置:静态存储区,在整个程序运行期间一直存在。
初始化
:未经
初始化
的全局静态变量会被自动
初始化
为0(自动对象的
值
是任意的,除非他被显式
初始化
);
作用域:全局静态变量在声明他的文件
一、 关于
char
*
初始化
赋
值
问题
“
const
char
*” 类型的
值
不能用于
初始化
&amp;amp;quot;
char
*&amp;amp;quot; 类型的实体
char
* p = &amp;amp;quot;openstack&amp;amp;quot;;
*p = 32; //将o替换为空格‘ ’
有问题:编译器会报错
因为“openstack”作为字符常量不能分配给指针变量p,正确应该为:
我找了很多,都不咋有用,以下是我在Visual Studio 2017中运行成功的 ,后面有的话再进行补充。
char
* 不能直接
初始化
,如果用strcpy()函数的话,vs会提醒不安全,需要用strcpy()_s函数,真是麻烦,我就想找个简单的初始话方法。
char
ch[]="hello world";
char
*str = ch;...