(C)我错过了这段代码?

时间:2016-01-07 01:21:50

标签: c++ c pointers

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

代码显示:

  

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;
}

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;
}

Live Demo