含义是先新建一个字符串,内容是abcd 然后str1是一个头指针,指向这个串. 但是这个新建串是作为const存在的,并不是一个可以编辑的变量,因此,一旦你想更改其中的值,程序就会挂掉.
char *str1 = (char*)malloc(5*sizeof(char));
str1 = "abcd";
相当于开辟一个5个长度的数组,头指针是str1,但是第二句又把str1指向的位置变了,之后还是不能操作str1的内容.
一、 关于
char
*
初始化
赋值问题
“const
char
*” 类型的值不能用于
初始化
"
char
*" 类型的实体
char
* p = "openstack";
*p = 32; //将o替换为空格‘ ’
有问题:编译器会报错
因为“openstack”作为字符常量不能分配给指针变量p,正确应该为:
关于函数外
初始化
与函数内
初始化
之前一直分的不是太清,也不太在意。昨天终于出现了这方面的问题,所以决定好好看下,以下是这次的一些收获,先看测试代码: 代码如下:#include “stdafx.h”#include <iostream>using namespace std;bool FillStr(
char
*&szDst, int nSize){ bool bRet = false; if (nSize > 0) { szDst = (
char
*)malloc(sizeof(
char
) * nSize); memset(szDst, 0, sizeof(
char
) * nSize);
无法将参数 3 从“const w
char
_t [5]”转换为“PW
CHAR
”
“
初始化
”: 无法从“const w
char
_t [5]”转换为“T
CHAR
*”
Visual Studio 2019 解决方案的多项目应用在讲述变量,数据类型,运算符和表达式以及程序流程控制,数组,函数的相关内容,所有的代码都放在解决方案c-core的c-core-foundational项目下。如果你有其他编程语言经验,类似于
C++
,Java,Python,Go语言它们都会有这些最最基本的内容,而且语法结构都很类似(但不完全相同)。而Visual Studio 2019的单...
1、{0}
初始化
int arr1[3] = {0};使用 {0} 的方式最简洁,一般在定义的时候使用。2、for 循环
初始化
int arr2[3];for (int i = 0; i < 3; i++) { arr2[i] = i;}使用 for 循环的好处是:可以将每个元素设为不同的值。3、memset 函数memset 函数声明为:void *memset(void *str, ...
有时候我们希望定义这样一种变量,它的值不能被改变,在整个作用域中都保持固定。例如,用一个变量来表示班级的最大人数,或者表示缓冲区的大小。为了满足这一要求,可以使用const关键字对变量加以限定:constint MaxNum=100;//班级的最大人数这样 MaxNum 的值就不能被修改了,任何对 MaxNum 赋值的行为都将引发错误:MaxNum=90;//错误,试图向 const 变量写入数据...
本文章仅为个人学习,如有错误之处请指正。
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
停课不停学我们在努力(来与我们一起努力吧 公众号:同年新月)C/
C++
字符串知识汇总01字符串是以空字符'0'结尾的
char
类型数组表示字符串① 字符串字面量(字符串常量)用双引号括起来的内容称为字符串常量。字符串的生存期是整个程序。注意:如果要在字符串内部使用双引号,必须在双引号前面加上一个反斜杠(") 字符串常量属于静态存储类别,这说明被使用的字符串只会在存储器中存储一次。而对于用双...
1 引言对于计算机程序处理而言,对内存的管理就像是对一片雷区的管理,管理的好,可以杀死一片一片的bug,管理的不好,将使你自己抓狂,程序漏洞百出,直至崩溃,据调查80%的程序崩溃都是内存的管理出现问题,有时候表面没有问题,运行一段时间后问题就爆发了,所以对内存的管理非常重要,这里和大家一起总结讨论下C/
C++
中关于内存管理的一些要点。2 内存分配方式内存分配方式有三种:(1)从静态存储区域分配。内...
内存管理我们需要知道——变量,其实是内存地址的一个抽像名字罢了。在静态编译的程序中,所有的变量名都会在编译时被转成内存地址。机器是不知道我们取的名字的,只知道地址。 内存的使用时程序设计中需要考虑的重要因素之一,这不仅由于系统内存是有限的(尤其在嵌入式系统中),而且内存分配也会直接影响到程序的效率。因此,我们要对C语言中的内存管理,有个系统的了解。 在C语言中,定义了4个内存区间:代码区;全局变量...