问题描述
我想使用带有只传递 2 个值的指针的 void 函数“返回”一个值。但是当我想打印出区域的值时。等于2,不是4。我试过把length++的地址改成area的地址,还是不行
#include <iostream>
#include <ctime>
void yes(int* lol,int* lol2);
using namespace std;
int main()
{
static int length,width,area;
int* p;
length = 2;
width = 2;
p = &length;
yes(&length,&width);
cout << length << " " << *(p+1);
cout << endl;
system("pause");
}
void yes(int* length,int* width)
{
int area;
int* p=&area;
area = *length * *width;
length = length + 1;
length = p;
}
解决方法
替换
length = length + 1;
length = p;
与
*length = *p;
或者更简单地去掉 p
并将其更改为
*length = area;
length = p;
将指针从 p
复制到 length
。 *length = *p;
将指针 p
指向的内容复制到 length
指向的位置。复制指针和复制指针指向的内容是有区别的。很多初学者关于指针的错误都是因为混淆了指针和指针指向的东西,这是两个不同的东西。
您不需要第二个指针 p
,因此最简单的方法是摆脱它并使用 *length = area;
。这会将 area
的值复制到 length
指向的位置。这就是你想要的(我认为)。
直接替换
length = length + 1;
length = p;
与
*length = *p;
你很高兴