博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++~数组/指针
阅读量:2381 次
发布时间:2019-05-10

本文共 964 字,大约阅读时间需要 3 分钟。

char* 相关问题

初始化

char *c;c=(char *)calloc(5,sizeof(char));// c=(char *)malloc(5*sizeof(char));  //和上面等同// c=new char[5];   //和上面等同

释放

malloc或者calloc 用free;

new 用 delete []c释放;

注:

malloc或者calloc, 最好不要直接写数字长度,针对楼主的问题,建议这样写:
malloc(sizeof(char) * strlen(“abcde”) + 1));

strcpy(a, b) 一定要验证是否满足 a的空间长度 > strlen(b).(运行时不报错,释放内存的时候会报错)

memcpy(a, b, len)的len参数一定要是a, b长度的最小值.

注意+1问题,数组溢出。


malloc与calloc的区别

调用方式不同,前者是总长度一个参数,后者是每个的大小和个数两个参数;

后者会对内存进行初始化操作,前者只分配内存。
参见:


char a[][4]/char (*a)[4]/char *a[4]/char**

依次为二维数组,指向char[]的指针,一个大小为4的存放char指针的数组,指向指针的指针。前两个可以转换,不能与其他转换(char指针指向的内容不确定)。

int main(){    char * a[4] = {
"this", "is", "a", "test!"}; ///a是一个大小为4的数组,数组的每一个成员是char类型的指针 char b[][4] = {
"aaa", "bbb", "bbb", "bbb", "bbb", "bbb"};//不存在 b[4][]的形式 char (*c)[4]; ///c是一个指针,指向char[4]类型的指针 char **d; c = &b[0]; ///取b[0]地址 d=a; printf("%s %s %s %s\n", a[0], b[0], c,d[1]); return 0;}

转载地址:http://jrkab.baihongyu.com/

你可能感兴趣的文章
elasticsearch 单机环境搭建
查看>>
spark 独立模式部署
查看>>
Redis 基础命令 --- String篇
查看>>
Redis 基础命令 --- Hash篇
查看>>
Redis 基础命令 --- List篇
查看>>
Redis 基础命令 --- Set篇
查看>>
Redis数据库篇 -- 生存时间
查看>>
面向对象设计基本原则
查看>>
Redis数据库篇 -- 事务
查看>>
hadoop 完全分布式环境搭建
查看>>
HDFS 回收站
查看>>
hadoop 完全分布式HA高可用集群(手工切换)搭建
查看>>
hadoop 完全分布式HA高可用集群(自动切换)搭建
查看>>
Hbase shell常见命令
查看>>
看看这同一句sql,scan index占用的资源大了很多!!
查看>>
couldn't set locale correctly报错解决
查看>>
回收基表的空间,造成物化视图只刷新了一部分数据
查看>>
ORA-12052,不能建立快速刷新物化视图的解决
查看>>
物化视图comlete刷新会产生大量的日志
查看>>
Mysql cluster slave server的自动检测与修复
查看>>