(C) 我错过了这个代码

(C) What i missed this code?

本文关键字:代码 错过了      更新时间:2023-10-16

我不知道我错过了什么,我使用指针对指针代码编写代码进行练习。

代码显示:

num1:1

num2:2

num1:2

num2:3

num1:3

编号: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 : %dnnum2 : %dn", num1, num2);
   def_1(num1, num2, _return);
   printf("num1 : %dnnum2 : %dn", *_return[0], *_return[1]);
   def_2(num1, num2, _return, ptr);
   printf("num1 : %dnnum2 : %dn", **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;
}

通过引用(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;
}

实时演示