为什么我的代码打印地址而不是数组内容? 我是C++新手,需要帮助。我想打印“C”的值,但它一直在打印它的地址。这是我的密码: #include <iostream> using namespace std; int* test (int a[5], int b[5]) { int *c = new int[5]; for (int i = 0; i < 5; i++) c[i] = a[i]+b[i]; return c; } int main() { int A[5] = {22, 33, 44, 55, 66}; int B[5] = {22, 33, 44, 55, 66}; int* C[10] = {test(A,B)}; for (int i = 0; i < 10; i++) cout<< &C[i] <<endl; return 0; } #包括 使用名称空间std; int*测试(int a[5],int b[5]){ int*c=新的int[5]; 对于(inti=0;i

为什么我的代码打印地址而不是数组内容? 我是C++新手,需要帮助。我想打印“C”的值,但它一直在打印它的地址。这是我的密码: #include <iostream> using namespace std; int* test (int a[5], int b[5]) { int *c = new int[5]; for (int i = 0; i < 5; i++) c[i] = a[i]+b[i]; return c; } int main() { int A[5] = {22, 33, 44, 55, 66}; int B[5] = {22, 33, 44, 55, 66}; int* C[10] = {test(A,B)}; for (int i = 0; i < 10; i++) cout<< &C[i] <<endl; return 0; } #包括 使用名称空间std; int*测试(int a[5],int b[5]){ int*c=新的int[5]; 对于(inti=0;i,c++,C++,去掉这行的& for (int i = 0; i < 10; i++) cout<< &C[i] <<endl; for(inti=0;i

去掉这行的
&

for (int i = 0; i < 10; i++) cout<< &C[i] <<endl;

for(inti=0;i<10;i++)不能去掉这行的
&

for (int i = 0; i < 10; i++) cout<< &C[i] <<endl;

for(inti=0;i<10;i++)不能去掉这行的
&

for (int i = 0; i < 10; i++) cout<< &C[i] <<endl;

for(inti=0;i<10;i++)不能去掉这行的
&

for (int i = 0; i < 10; i++) cout<< &C[i] <<endl;


for(int i=0;i<10;i++)cout首先
int*C[10]={test(A,B)};
应该是
int*C=test(A,B);
当您在函数中创建数组并返回指向它的指针时。其次,您应该在main的末尾调用
delete[]C
,每次调用
new[]
您应该调用
delete[]
。最后,当您在函数中创建数组并返回指向它的指针时,首先使用
cout中运算符(&)的地址
int*C[10]={test(A,B)};
应该是
int*C=test(A,B);
C
在main的末尾调用
new[]
并且每次调用
new[]
时都应该调用
delete[]
。最后,在
coutFirst
int*C[10]={test(A,B)}中使用操作符(&)的地址;
应该是
int*C=test(A,B);
在函数中创建数组并返回指向它的指针时。其次,在调用
new[]
时,应在main末尾调用
delete[]C
,每次调用
new[]
时,应调用
delete[]
。最后,应使用运算符(&)的地址在
cout中,首先
int*C[10]={test(A,B)};
应该是
int*C=test(A,B);
当您在函数中创建数组并返回指向它的指针时。其次,您应该在main的末尾调用
new[]
并且每次调用
new[]
您应该调用
delete[]
。最后,您在
cout中使用运算符(&)的地址,并给出变量的地址。因此&C[i]给出数组C的第i个元素的地址。只需打印而不使用&。

&给出变量的地址。因此&C[i]给出数组C第i个元素的地址。只需不带&.

打印即可给出变量的地址。因此&C[i]给出数组C第i个元素的地址。只需不带&.

打印即可给出变量的地址。因此&C[i]给出数组C第I个元素的地址。只需不带&。

打印所有值,而不是22,33,44…等等,因为您的
测试
函数不正确,包含许多错误,包括内存泄漏。这是我问题的答案,因此我将其标记为答案。将所有值打印为0,而不是22,33,44。。.etc因为您的
test
函数不正确,并且包含许多错误,包括内存泄漏。这是我问题的答案,因此我将其标记为答案。将所有值打印为0,而不是22,33,44…etc因为您的
test
函数不正确,并且包含许多错误,包括内存泄漏。此acutally是我问题的答案,因此我将其标记为答案。将所有值打印为0,而不是22,33,44…等等,因为您的
test
函数不正确,并且包含许多错误,包括内存泄漏此tally是我问题的答案,因此我将其标记为答案。同时停止使用
new[]
。这是一个8行程序,您已经设法泄漏了。请改用
std::vector
。这也将修复
int*C[10]={test(A,B)}
错误。顺便说一句,我希望您理解,当这完成时,您会丢失
&
,您仍将打印地址(其中10个;1个来自您的分配,9个空地址)。我很确信这不是你的意图。@BaummitAugen,我不确定这是什么意思。不管怎样,我会用谷歌搜索它。@kuki。也不要再使用
new[]
。这是一个8行程序,你已经设法泄漏了。改用
std::vector
。这也会解决这个
int*C[10]={test(A,B)}
bug顺便说一句。我希望你能理解,当这一切结束时,你丢失了
&
你仍然会打印地址(其中10个;1个来自分配,9个空)。我相当确信这不是你的意图。@BaummitAugen,我不确定这意味着什么。不管怎样,我会用谷歌搜索它。@kuki。同时停止使用
new[]
。这是一个8行程序,您已经设法泄漏了。请改用
std::vector
。这也将修复
int*C[10]={test(A,B)}
错误。顺便说一句,我希望您理解,当这完成时,您会丢失
&
,您仍将打印地址(其中10个;1个来自您的分配,9个空地址)。我很确信这不是你的意图。@BaummitAugen,我不确定这是什么意思。不管怎样,我会用谷歌搜索它。@kuki。也不要再使用
new[]
。这是一个8行程序,你已经设法泄漏了。改用
std::vector
。这也会解决这个
int*C[10]={test(A,B)}
bug顺便说一句。我希望你能理解,当这一切结束时,你丢失了
&
你仍然会打印地址(其中10个;1个来自分配,9个空)。我相当确信这不是你的意图。@BaummitAugen,我不确定这意味着什么。无论如何,我会用谷歌搜索它。@kuki。