首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CC++const char*、char const*、char * const三者区别

C/C++ 中常见以下三种定义: const char *ptr; char const *ptr; char * const ptr; 本文整理三者之间区别联系。...一、const char *ptr; 定义一个指向字符常量指针,这里,ptr是一个指向 char* 类型常量,所以不能用ptr来修改所指向内容,换句话说,*ptr为const,...但是ptr声明并不意味着它指向实际上就是一个常量,而只是意味着对ptr而言,这个是常量。...gcc编译报错信息: 注释掉16行ptr[0] = 's';运行正常,运行结果为: hello world gello world 另外还可以通过重新赋值给该指针来修改指针指向,如上代码取消7、...如果既不允许s被修改,也不允许s所指向数据被修改,那么需要声明为const char * const s。 ps:补充一个传例子。

1.5K41
您找到你想要的搜索结果了吗?
是的
没有找到

MySQLenum,charvarchar,decimal

1.MySQLENUM类型使用之性别男女设定默认为男:  SQL语句为: mysql> create table student (id int(11) primary key auto_increment...女','保密')default '保密')ENGINE=InnoDB; 写入: mysql>insert into student (name,sex) value ('张三','男') 注:enum如果默认是...此时,插入数据“12.3”、“12”等会出现“数据溢出错误”异常;插入“1.23”或“1.2345...”会自动四舍五入成“1.2”;插入“2”会自动补成“2.0”,以确保2位有效长度,其中包含1位小数...3.varchar和char: varchar:字符串型,不定长,溢出则截取掉,不足则不补满。如:varchar name(10); char:字符串型,定长,溢出则截取掉,不足则补满。...如:char password(32),多用于密码md5长度固定为32位。

2K10

char *转换为string陷阱:char*包含较多0

今天给团队调试一个错误,概率性加密数据没法做解密,现象是解密出来结果和源数据长度不一致,很奇怪现象,因为加密使用数据是随机,所以使得问题出现时表象是概率问题; 因为初次做加解密算法相关项目...,碰到这样问题,首先是单步把解密流程过了一遍,发现解密没有问题,能正常解密,但解密出来长度就是不对,分析才发现加密后数据长度也不正常,所以考虑是加密源数据问题,通过分析,才发现一个二进制源数据经过转换为字符串对象...string后使用openssl接口完成加密处理,导致string对象比原来字节数组长度要短,短原因是字节数组包括了'\0'结束符,原以为是openssl接口实现存在这样问题,建议使用方将加密字节数组将...0字符都过滤一遍,但想来还是不正确,原来char*数组转换为string存在一个陷阱:见“https://blog.csdn.net/b876144622/article/details/79972498...”;所以还是转换不合适,修改前后代码如下:   //原来代码   #if 0   char *temp = (char *)malloc(length + 1);   if (temp == NULL

40820

python函数返回详解

1.返回介绍 现实生活场景: 我给儿子10块钱,让他给我买包烟。...这个例子,10块钱是我给儿子,就相当于调用函数时传递到参数,让儿子买烟这个事情最终目标是,让他把烟给你带回来然后给你对么,,,此时烟就是返回 开发场景: 定义了一个函数,完成了获取室内温度,...想一想是不是应该把这个结果给调用者,只有调用者拥有了这个返回,才能够根据当前温度做适当调整 综上所述: 所谓“返回”,就是程序函数完成一件事情后,最后给调用者结果 2.带有返回函数 想要在函数把结果返回给调用者....保存函数返回 在本小节刚开始时候,说过“买烟”例子,最后儿子给你烟时,你一定是从儿子手中接过来 对么,程序也是如此,如果一个函数返回了一个数据,那么想要用这个数据,那么就需要保存 保存函数返回示例如下...:%d'%result) 结果: 1~100累积和为: 5050 5.小总结 函数根据有没有参数,有没有返回可以相互组合 定义函数时,是根据实际功能需求来设计,所以不同开发人员编写函数类型各不相同

3.2K20

关于MySQLcharvarchar区别

在MySQL,varchar和char都是可以存储字符串类型,并且,在设计数据表时,必须明确指定长度!...varchar是变长,假设某字段设计为varchar(10),当存入是"java"字符串时,实际存入4个字符,则实际占用也是4个字符空间大小; char是定长,假设某字段设计为char(10),...在MySQL处理varchar类型时,默认情况下,还会使用额外1个字节记录“实际存入字符数量”,也就是说,将"java"存入到varchar(10)字段,MySQL还会使用额外1个字节空间记下...4这个数量值,后续,当读取这个时,MySQL会先读取这个4,然后再开始获取字段数据;而char类型就不存在这个问题,因为使用char类型存储字符串长度一定是固定(即使不固定,也会添加空格,使得该字段所有字符串长度都与字段设计保持一致...char应用场景,应该优先使用char

2.3K20

golang 函数使用返回指针返回区别,底层原理分析

变量内存分配回收 堆区别 变量内存分配逃逸分析 检查该变量是在栈上分配还是堆上分配 函数内变量在堆上分配一些 case 函数使用指针返回时性能差异 其他一些使用经验 总结 变量内存分配回收...栈 函数调用栈简称栈,在程序运行过程,不管是函数执行还是函数调用,栈都起着非常重要作用,它主要被用来: 保存函数局部变量; 向被调用函数传递参数; 返回函数返回; 保存函数返回地址,返回地址是指从被调用函数返回后调用者应该继续执行指令地址...,这一点堆上分配内存截然不同。...上文介绍了 Go 变量内存分配方式,通过上文可以知道在函数定义变量并使用返回时,该变量会在栈上分配内存,函数返回时会拷贝整个对象,使用指针返回时变量在分配内存时会逃逸到堆返回时只会拷贝指针地址...那在函数返回时是使用还是指针,哪种效率更高呢,虽然有拷贝操作,但是返回指针会将变量分配在堆上,堆上变量分配以及回收也会有较大开销。

4.9K40

C语言中柔性数组 C语言结构体charchar用法

2.引用这种用法目的 主要是为了方便管理内存缓冲区,如果你直接使用指针而不使用数组,那么,你在分配内存缓冲区时,就必须分配结构体一次,然后再分配结构体内指针一次,(而此时分配内存已经结构体内存不连续了...这种方法造成字符串结构体是分离,不利于操作。如果把字符串跟结构体直接连在一起,不是更好吗?...柔性数组成员允许结构包含一个大小可变数组。柔性数组成员只作为一个符号地址存在,而且必须是结构体最后一个成员,sizeof 返回这种结构大小不包括柔性数组内存。...当然,上面既然用malloc 函数分配了内存,肯定就需要用free 函数来释放内存: 1 free(stpTest); 应当尽量使用标准形式,在非C99场合,可以使用指针方法。...malloc申请是14个字节连续空间,它返回一个指针指向这14个字节,强制转换成struct INFO时候,前面4个字节被认为是Mydata结构,后面的部分拷贝了“123456789”内容。

2.6K31

箭头函数this

其实那只是其中一个因素,还有一个因素就是在ZnHobbies方法this已经不属于上一个区块,而这里this并没有name。...所以 解决办法其中一个就是在ZnHobbies函数写入 var that = this; 然后将this替换成that,所以输出结果,就有了lucifer名字啦。...还有的一个办法就是将ZnHobbies函数map改写成箭头函数: ZnHobbies: function () { this.hobbies.map((hobby)=...为什么箭头函数可以达到这样效果呢?是因为箭头函数没有它自己'this'。它this是继承于它父作用域。...所以它不会随着调用方法改变而改变,所以这里this就指向它父级作用域,而上一个this指向是Lucifer这个Object。所以我们就能准确得到Lucifername啦。

2.1K20

JS函数本质,定义、调用,以及函数参数和返回

: 作为数据保存在一个变量 var fn=function(){ return "这是一个函数"; } console.log(fn());//这是一个函数 console.log(fn); /*...(fn,1000);//此处需要传函数本体 //此处不能加括号,如果加了括号,会立刻调用,而不是等到1秒之后 函数可以作为返回使用: function fn(){ return function(){...,外层不能访问里层函数 代码块定义函数: 由于js没有块级作用域,所以依然是处于全局作用域中 都会出现预解析函数被提前声明 if(true){ function fn1(){ } }...operation对象 //就需要添加return this 构造函数调用: 构造函数命名时一般首字母大写 调用时用new+函数名,返回是一个对象 function Person(){ } var...回调函数,如 setTimeout(fn, time); ---- 函数返回 return: 表示函数结束 将返回 什么可以做返回: 直接return ,返回是undefined 数字 字符串

17.5K20

MySQLchar、varchar和text设计

首先普及几个常识: 1、char(n)和varchar(n)括号n代表字符个数,并不代表字节个数,所以当使用了中文时候(UTF8)意味着可以插入m个中文,但是实际会占用m*3个字节。...2、同时char和varchar最大区别就在于char不管实际value都会占用n个字符空间,而varchar只会占用实际字符应该占用空间+1,并且实际空间+1<=n。...3、超过char和varcharn设置后,字符串会被截断。 4、char上限为255字节,varchar上限65535字节,text上限为65535。...(主要考虑text没有默认问题) CREATE TABLE `test` ( `id` int(11) DEFAULT NULL, `a` varchar(500) DEFAULT NULL...--+-----------------------------------+ 从上面的简单测试看,基本上是没有什么区别的,但是个人推荐使用varchar(10000),毕竟这个还有截断,可以保证字段最大可控

2.1K10

MySQLchar、varchar和text区别

1.char:存储定长数据很方便,CHAR字段上索引效率级高,必须在括号里定义长度,可以有默认,比如定义char(10),那么不论你存储数据是否达到了10个字符,都要占去10个字符空间(自动用空格填充...),且在检索时候后面的空格会隐藏掉,所以检索出来数据需要记得用什么trim之类函数去过滤空格。...2.varchar:存储变长数据,但存储效率没有CHAR高,必须在括号里定义长度,可以有默认。保存数据时候,不进行空格自动填充,而且如果数据存在空格时,当值保存和检索时尾部空格仍会保留。...另外,varchar类型实际长度是它实际长度+1,这一个字节用于保存实际使用了多大长度。 3.text:存储可变长度非Unicode数据,最大长度为2^31-1个字符。...text列不能有默认,存储或检索过程,不存在大小写转换,后面如果指定长度,不会报错误,但是这个长度是不起作用,意思就是你插入数据时候,超过你指定长度还是可以正常插入。

1.3K40

函数基础,函数返回,函数调用3方式,形参与实参

5.29自我总结 一.函数基础 1.什么是函数 在程序,函数是具有种功能功能工具 2.函数两个阶段 1.函数定义 a)有参函数定义 在函数定义阶段括号内有参数,称为有参函数。...def 函数名(param1、param2……x=9): #其中paraml1param2为函数需要填入,x为默认参数 '''对于函数描述''' 函数功能描述信息 :...() c)空函数调用 func() 二.函数返回函数返回: 如 def Than_the_size(num_1,num_2): if num_1>num_2: print...(num_1) else: print(num_2) print(Than_the_size(3,2)) #这时我们终端看到是None应为我们没有返回,print打印只是给终端看并没有返回函数...,但是只能返回一个 else: return num_2 print(Than_the_size(3,2)) #这时候我们看到返回是3,return是把返还给函数并且停止函数下面的运行

2K20

SQLServerchar、varchar、nchar、nvarchar区别:

char: 固定长度,存储ANSI字符,不足补英文半角空格。...nvarchar(n) :包含 n个字符可变长度 Unicode 字符数据。n 必须介于 1 4,000 之间。字节存储大小是所输入字符个数两倍。所输入数据字符长度可以为零。...编码,即统一字符编码标准,会减少乱码出现几率; ④ 如果你做项目可能涉及不同语言之间转换,建议用nvarchar。...有n前缀,n表示Unicode字符,即所有字符都占两个字节,nchar,nvarchar 字符,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文汉字同时存在时容易造成混乱,Unicode...如果你肯定存储数据长度,而且不包中文,可以选择char类型。 如果肯定存储数据长度,但可能包括中文,可以选择nchar类型。

4.7K20

MySQLchar、varchar和text区别

1.char:存储定长数据很方便,CHAR字段上索引效率级高,必须在括号里定义长度,可以有默认,比如定义char(10),那么不论你存储数据是否达到了10个字节,都要占去10个字节空间(自动用空格填充...),且在检索时候后面的空格会隐藏掉,所以检索出来数据需要记得用什么trim之类函数去过滤空格。...2.varchar:存储变长数据,但存储效率没有CHAR高,必须在括号里定义长度,可以有默认。保存数据时候,不进行空格自动填充,而且如果数据存在空格时,当值保存和检索时尾部空格仍会保留。...另外,varchar类型实际长度是它实际长度+1,这一个字节用于保存实际使用了多大长度。 3.text:存储可变长度非Unicode数据,最大长度为2^31-1个字符。...text列不能有默认,存储或检索过程,不存在大小写转换,后面如果指定长度,不会报错误,但是这个长度是不起作用,意思就是你插入数据时候,超过你指定长度还是可以正常插入。

1.9K10
领券