gpt4 book ai didi

c - 多个 C 指针

转载 作者:行者123 更新时间:2023-12-04 09:34:07 25 4
gpt4 key购买 nike

我做了一个测试,我试着像这样将一个数字传递给一个 int 指针:

void   mega_pointer(int *********number)
{
*********number = 1337;
}

但是我有一个段错误。我不明白。有人可以帮助我吗?

编辑:我添加我的主要内容:

int   main(void)
{
int ********number;

mega_pointer(&number);
printf("Result = %d\n", ********number);
return 0;
}

PS:对不起你的眼睛,我永远不会在真正的程序中使用 9*,这只是一个实验 ^^

最佳答案

重要的问题是你如何调用这个函数;它需要一个 9 间接链才能成功调用。看例子

#include <stdio.h>

void mega_pointer(int *********number)
{
*********number = 1337;
}

int main() {
int i = 42;
int *p1 = &i;
int **p2 = &p1;
int ***p3 = &p2;
int ****p4 = &p3;
int *****p5 = &p4;
int ******p6 = &p5;
int *******p7 = &p6;
int ********p8 = &p7;
int *********p9 = &p8;
mega_pointer(p9);
printf("%d\n", i);
}

打印1337

此外,您的程序中存在错误,因为您的代码确实是错误的,并且您将 1337 分配给 int * 类型的左值(在我的代码中,这将是 p1 而不是 i;但是,如果未启用警告,则不会引起注意。如果您使用 gcc -Wall 编译原始代码,则会收到 warning: assignment从没有强制转换的整数生成指针[默认启用]

关于c - 多个 C 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18251010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com