gpt4 book ai didi

c++ - (C) 我错过了什么代码?

转载 作者:搜寻专家 更新时间:2023-10-31 02:18:20 26 4
gpt4 key购买 nike

我不知道我错过了什么,我写的代码是使用指针指向指针代码来练习的。

代码显示:

num1 : 1

num2 : 2

num1 : 2

num2 : 3

num1 : 3

num2 : 1636705

我猜的,最后的结果可能地址在_result[1],但我不知道为什么会显示,让我帮助显示最后的num2等于4

#include <stdio.h>

void def_1(int num1, int num2, int *_return[2]);
void def_2(int num, int num2, int* _return[2] ,int **ptr[2]);
void main()
{
int num1 = 1;
int num2 = 2;
int* _return[2];
int** ptr[2] = { NULL };

printf("num1 : %d\nnum2 : %d\n", num1, num2);
def_1(num1, num2, _return);

printf("num1 : %d\nnum2 : %d\n", *_return[0], *_return[1]);
def_2(num1, num2, _return, ptr);

printf("num1 : %d\nnum2 : %d\n", **ptr[0], **ptr[1]);
}

void def_1(int num1, int num2, int* _return[2])
{
_return[0] = &num1;
_return[1] = &num2;

*_return[0] += 1;
*_return[1] += 1;
}

void def_2(int num1, int num2, int* _return[2] ,int** ptr[2])
{
ptr[0] = &_return[0];
ptr[1] = &_return[1];

**ptr[0] += 1;
**ptr[1] += 1;
}

最佳答案

这些是对临时对象的引用:

void def_1(int num1, int num2, int* _return[2]) 
{
_return[0] = &num1;
_return[1] = &num2;
}

通过引用接受 int (C++)

void def_1(int& num1, int& num2, int* _return[2]) 
{
_return[0] = &num1;
_return[1] = &num2;
}

或者通过指针(C):

void def_1(int* num1, int* num2, int* _return[2]) 
{
_return[0] = num1;
_return[1] = num2;
}

Live Demo

关于c++ - (C) 我错过了什么代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34645851/

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