关于字符串指针动态分配内存和赋初值(初学者求教)
我被string,char,char*,char[],弄到思维乱七八糟了,望各位大大帮我整理下思维- -!
char a[] = "abc";//自动分配4个内存(包含'/0')的字符串数组;
char *cpa = a;//指向数组a的首地址
【问题1:cpa指针已经分配空间给他了?没有new空间给他哦?】
char *cpb = new char[100];//为cpb分配100个字符大小的空间
cpb = a; //把cpb指向数组a的首地址
【问题2:这种方法和上面的方法有什么区别啊?是不是这里分配了100个字符大小的空间给指针,但指针每次指向一个字符,所以是在浪费空间?】
cout<<cpb<<endl;//输出结果为abc
【问题3:我知道*cpb是输出当前指针所指向地址的值'a',但输出cpb指针的结果是整个字符串abc,cpb是一个字符指针,指向一个字符串,怎么会输出整个字符串而不是一个字符呢?难道系统自动做了遍历?】
char *cpc = "def";//cpc指针指向字符串首地址
【问题4:和问题1类似,这指针已经分配空间给他了?】
string b;
b = cpc;
【问题5:估计这个关于STL里面的string,用sring 定义了一个字符串常量b(而非指针)怎么可以把一个字符指针cpc赋值给字符串常量b的?】
【问题6: char *p = "abc" 对比 char e[] = "abc"; char *p = e;的区别】
个人猜想: 前者没为字符串申请空间,所以不能改动指针所指向的值,而后者所分配的空间则为4个字符大小的空间,所以只能删减字符而不能增加字符。
最后一个问题- -!!这就是实际操作中遇到的问题。
const char *a = 【调用一个函数,其返回值为("const char *x")】; //获取一段字符串
编译没错,但调试跟踪数据时,却说“错误的指针”,后来发现是因为指针a没有初始化和分配内存空间。
我随便写了个简单的相似的例子
const char *m = "poi";
const char *n = m;
cout<<n<<endl;
为什么这样子又不用申请空间就直接可以运行呢?
我思路很乱,问题很多,望各位热心人士帮忙解答
char a[] = "abc";//自动分配4个内存(包含'/0')的字符串数组;
char *cpa = a;//指向数组a的首地址
【问题1:cpa指针已经分配空间给他了?没有new空间给他哦?】
char *cpb = new char[100];//为cpb分配100个字符大小的空间
cpb = a; //把cpb指向数组a的首地址
【问题2:这种方法和上面的方法有什么区别啊?是不是这里分配了100个字符大小的空间给指针,但指针每次指向一个字符,所以是在浪费空间?】
cout<<cpb<<endl;//输出结果为abc
【问题3:我知道*cpb是输出当前指针所指向地址的值'a',但输出cpb指针的结果是整个字符串abc,cpb是一个字符指针,指向一个字符串,怎么会输出整个字符串而不是一个字符呢?难道系统自动做了遍历?】
char *cpc = "def";//cpc指针指向字符串首地址
【问题4:和问题1类似,这指针已经分配空间给他了?】
string b;
b = cpc;
【问题5:估计这个关于STL里面的string,用sring 定义了一个字符串常量b(而非指针)怎么可以把一个字符指针cpc赋值给字符串常量b的?】
【问题6: char *p = "abc" 对比 char e[] = "abc"; char *p = e;的区别】
个人猜想: 前者没为字符串申请空间,所以不能改动指针所指向的值,而后者所分配的空间则为4个字符大小的空间,所以只能删减字符而不能增加字符。
最后一个问题- -!!这就是实际操作中遇到的问题。
const char *a = 【调用一个函数,其返回值为("const char *x")】; //获取一段字符串
编译没错,但调试跟踪数据时,却说“错误的指针”,后来发现是因为指针a没有初始化和分配内存空间。
我随便写了个简单的相似的例子
const char *m = "poi";
const char *n = m;
cout<<n<<endl;
为什么这样子又不用申请空间就直接可以运行呢?
我思路很乱,问题很多,望各位热心人士帮忙解答
...全文
相关推荐
C++指针与动态分配 内存new关键字专题
本文是学习C++的基础内容,指针是C或C++所特有的,因此应熟练掌握指针的使用,本文集中介绍C或C++中的各种指针,包括指针数组,数组指针,常量指针,指向指针的指针,尤其是对二维数组和指针进行了详细精辟的解释,在读完本文的二维数组和指针的讲解之后,相信你就会对指针有一个车底的了解了。本文内容完全属于个人见解与参考文现的作者无关,其中难免有误解之处,望指出更正。
C++指针与动态分配内存new关键字专题
C++指针与动态分配内存new关键字专题。网上收集,学习内存分配的好资料。
C++中字符串以及数组和指针的互相使用讲解
主要介绍了C++中字符串以及数组和指针的互相使用讲解,是C++入门学习中的基础知识,需要的朋友可以参考下
c代码-1.10 变量赋初值
c代码-1.10 变量赋初值
动态分配内存 实现数组,子字符串查找
动态分配内存 实现数组,子字符串查找 动态分配内存,优化代码,嵌入式优化


