gpt4 book ai didi

c - 指针、结构、传递参数、递归

转载 作者:太空宇宙 更新时间:2023-11-04 05:55:03 24 4
gpt4 key购买 nike

我有这样的代码:

typedef struct _Statistics {

Some code here

} Statistics;

void function1(char *string, Statistics *statistic){

Some code here

function1(string1, statistic);
}
int main(){

Statistics statistic;
function1(string, &statistic);
}

这可能是个愚蠢的问题,但我不完全理解指针:我明白为什么我在main函数中使用&,&发送变量统计地址,以便在function1中我可以修改它。但是为什么我不在递归函数中使用 &1?

最佳答案

因为&statistic(在function1()中)是指针的内存地址,而不是指针所包含的地址。

&statistic的类型是function1()中的Statistics**


关于指针的几句话

假设我们定义了以下变量:

char c = 'a';
char *p_c = &c;

现在,我们将打印p_cc的值和内存地址:

printf("%c\n", c); // will print 'a'
printf("%c\n", *p_c); // will print 'a'

printf("%p\n", &c); // will print the memory address of c
printf("%p\n", p_c); // will print the memory address of c

printf("%p\n", &p_c); // will print the memory address of p_c

最后我们定义了一个char**,一个指向char的指针:

char **p_pc = &p_c;

printf("%c\n", **p_pc); // will print 'a'
printf("%p\n", *p_c); // will print the memory address of c
printf("%p\n", p_c); // will print the memory address of p_c

关于c - 指针、结构、传递参数、递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29559267/

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