(C) 我错过了这个代码
(C) What i missed this code?
我不知道我错过了什么,我使用指针对指针代码编写代码进行练习。
代码显示:
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;
}
实时演示
相关文章:
- 任何人都可以告诉我我的 C++ 代码出了什么问题?
- gcc 是否在 2 条短裤的过度对齐结构的比较中错过了优化机会?
- 我的C++合并排序代码不起作用。我在这里错过了什么?
- 代码占用了我输入的一半
- 我无法找出我的代码出了什么问题
- 我是否为邪恶刽子手的构造函数错过了什么?
- C++:将向量传递给函数,然后在main中调用函数.错过了什么
- 为什么我的代码返回了错误的平方值?C++
- 运行简单的.oct文件时Octave崩溃,我的代码出了什么问题?
- 随机访问迭代器:我错过了什么?
- 我无法弄清楚我的代码出了什么问题
- 堆排序,我无法弄清楚我的代码出了什么问题,输出顺序不正确
- 当编译时已知引用占用结构中的空间时,是否错过了优化?
- std::元组大小,是不是错过了优化?
- 为什么这段代码崩溃了
- 此代码的输出是什么?我在这里错过了什么吗?
- 下面显示的代码片段在 Coliru 和 Ideone 中编译,但根据 iso § 8.5 p6,它不应该,还是我错过了什么?
- AFAIK,下面的代码不应该编译,但它可以在 clang 和 GCC 中编译。我在这里错过了什么?
- (C) 我错过了这个代码
- 据我所知,下面的函数不是constexpr,而是用clang和g++编译的代码.我错过了什么