在C++中,这两种定义是否等价???

来源:百度知道 编辑:UC知道 时间:2024/05/17 02:23:00
char *pc = 0;
char **ppc=&pc;

char *pc=0;
char *ppc=*pc;

char *pc=0;
char *ppc=*pc;//空指针会指向什么呢,
char **ppc=&pc; //ppc是指针的指针
应该不同
char *ppc=*pc;这个要用的话,也必需先强制类型转换,不然错误.char *ppc=(char *)*pc;
并且如楼上所说,char *pc=0这句说明pc是个NULL指针,不能对它进行解除引用,运行会说不能为read的

一样不过含义不同

肯定不一样,首先前一种写法ppc是一个指向指针的指针,第二种写法ppc是一个指向字符的指针,此外第二种写法本身就不对,char *pc=0这句说明pc是个NULL指针,不能对它进行解除引用。像*pc就会出错。

*pc 是解引用
char c = *pc;

不一样的。char *ppc=*pc;指针怎么能=指针呢 至少是个地址才对吧!
你可以自己写个例子调试一下 这个是vc6.0中 调试过的 希望对你有用
#include "stdafx.h"
#include "iostream.h"

int main(int argc, char* argv[])
{
int a=0;
int *pc=&a;
int **pcc=&pc;
cout<<"pc="<<*pc<<endl;
cout<<"pcc="<<**pcc<<endl;
int *pb=&a;
int *ppb=&(*pb);
cout<<"pb="<<*pb<<endl;
cout<<"pbb="<<*ppb<<endl;
return 0;
}