加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 非常基本的问题

发布时间:2020-12-16 10:54:18 所属栏目:百科 来源:网络整理
导读:因为我们在函数的参数列表中使用指针 void f(int *); 这意味着此函数将接收指向整数的指针 但是这意味着什么 void f(int ***); 和 void f(int **=0) 解决方法 void f(int ***); 表示该函数接收指向指向int的指针的指针.这适用于它: int x=42;int *px=x;int
因为我们在函数的参数列表中使用指针

void f(int *);

这意味着此函数将接收指向整数的指针
但是这意味着什么

void f(int ***);

void f(int **=0)

解决方法

void f(int ***);

表示该函数接收指向指向int的指针的指针.这适用于它:

int x=42;
int *px=&x;
int **ppx=&px;
int ***pppx=&ppx;
f(pppx);

现在关于第二个,它是一个接收指向int的指针的函数,如果你什么都不给它,它默认为0.

int x=42;
int *px=&x;
int **ppx=&px;
f(ppx);  // pt to pt to x
f();     // same as f(0)

更新:

这种双指针的实际应用是内存分配例程,如:

bool alloc(T **mem,int count);

此函数返回true / false,具体取决于它是否有效,并将使用实际内存地址更新传入的指针,如下所示:

T *mem;
verify(alloc(&mem,100));

传入一个未初始化的指针,该函数可以用实际值覆盖它,因为你传递了一个指向实际指针的指针.最后,mem包含一个指向有效内存的指针.

另一个应用程序,更常见但很少启发,是一个数组(所谓的锯齿状数组).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读