我不知道自己错过了什么,我使用指针代码编写代码进行练习。
代码显示:
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;
}
答案 0 :(得分:2)
这些是对临时工具的引用:
void def_1(int num1, int num2, int* _return[2])
{
_return[0] = &num1;
_return[1] = &num2;
}
通过引用(C ++)接受int
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;
}