char **p中**的意思

zq0417 2007-03-04 09:23:35
void GetMemory( char **p, int num )
{
 *p = (char *) malloc( num );
}

void Test( void )
{
 char *str = NULL;
 GetMemory( &str, 100 );
 strcpy( str, "hello" );
 printf( str );
}
**p表示的是什么?
*p = (char *) malloc( num );中*p又是什么意思?
...全文
351 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tiancaiak 2007-03-05
  • 打赏
  • 举报
回复
指针也是个量,也要占内存的,当然可以再找一个指针指向这块存放指针的地址
lengxueqingfeng 2007-03-05
  • 打赏
  • 举报
回复

当我们要存一个变量的地址的时候就会用到指针.
因为指针也是一个变量,当我们要保存一个指针变量的地址的时候也会用到指针,只是这个指针保存的另一个指针变量的地址,通常我们把这种指针叫做指针的指针,以此类推,那保存此种指针的地址的指针变量叫什么呢,只有叫指针的指针的指针。
使用如下:

char*pc; // 指针,保存的类型为char的变量的地址
char**ppc; // 指针,保存的是另一个指向char变量的指针的地址;
char***pppc;//指针,保存的是另一个指向char*变量的指针的地址;

pc = new char[5];
ppc = &pc;//保存指针pc的地址;
pppc = &ppc;//保存指针ppc的地址;

//这里声明时,
char*,*表明此变量为指针,char为该指针指向变量的类型.
char**, *表明此变时为指针,char*为该指针指向变量的类型.

变量pc,ppc,pppc都是指针,只是指向的变量类型不同罢了,使用的时候和平时常用的pc这种指针是一样的。

不要看它*号多就被吓倒了,它也只是声明的一个指针型类.


snprintf 2007-03-05
  • 打赏
  • 举报
回复
也可以这样理解:
char* *p;
把 char* 看作一种类型(指向字符的指针类型), p 是指向这种类型的指针(即指向 " 指向字符的指针类型" 的指针).
kenneth_lueng 2007-03-05
  • 打赏
  • 举报
回复
可以认为p指向一个指针的数组
feillex 2007-03-04
  • 打赏
  • 举报
回复
**p表示二级指针(指针的指针)
你要改变传入指针自身的值,要么传入指针的指针,要么传入指针的引用。

blackmurder 2007-03-04
  • 打赏
  • 举报
回复
**p表示p是一个指向指针的指针
比如char *a;
那么就可以用p存储a的地址
而*p则和a一样,是指向char型的指针

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧