当前位置:编程学习 > C/C++ >>

C++中的指针问题

#include<iostream>
#include<string>
using namespace std;

class person
{
private:
char *buff;//buff是一个指向char型,或者char型数组的指针,buff内装变量的地址(数组的首地址),*char应该为内容
public:
person(const person &me);
person(char *mess); //同上
void display();
};

person::person(const person &me)
{
buff=new char[strlen(me.buff)+1]; //类的数据成员是*buff,这里为什么是//me.buff,me.buff应该是地址,地址的strlen是什么意思?
strcpy(buff,me.buff); //两个地址相互copy?
}

person::person(char *mess)
{
buff=new char[strlen(mess)+1]; //问题同上
strcpy(buff,mess);
}

void person::display()
{
cout<<buff<<endl; //输入的buff,地址?
}

void main()
{
person p1=person("aaaaa");
person p2=person(p1);
p1.display();
p2.display();
}

我这里不懂的是字符型指针的用法,*buff,buff的意义,理解不了这段程序中的用法
答案:这个是典型的C风格和C++风格混合在一起的问题,建议直接用C++的string吧(预处理命令里不也包含了string了么)
说下你的问题
buff=new char[strlen(me.buff)+1];
为buff字符串(C语言风格的串,你可以理解为一串连续存储的char,其中buff指针指向这队char的第一个的地址)
strlen是C库中的函数,这里是用来计算串的长度,传入的参数是char*,也就是返回上面提到的那个串的长度(里面到底有多少个char),最后+1是为了给字符串的'\\0'留出位置。C语言风格的字符串是用'\\0'表示结束的,strlen返回的长度不包括这个'\\0'(具体请百度或google C和C++字符串区别)
strcpy函数也是C标准库里的函数,传入参数是两个指针,把后者指针指向的内容拷贝到前者指向的空间。
最后建议多了解些指针相关的知识

上一个:研究生学习c++怎么样
下一个:关于C++的const语法

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,