指向c+中函数中的数组的指针+; 我是C++初学者。指针让我很困惑。特别是如何在函数和数组中使用它。我试图在函数中创建一个指向数组的指针,并将其输出。但是,它一直给我数组的地址,而不是值 void testing(int* arr){ cout << arr << endl; } int main() { int my_arr[]{ 4,7,1 }; testing(my_arr); string y; getline(cin, y); return 0; } 无效测试(int*arr){ cout

指向c+中函数中的数组的指针+; 我是C++初学者。指针让我很困惑。特别是如何在函数和数组中使用它。我试图在函数中创建一个指向数组的指针,并将其输出。但是,它一直给我数组的地址,而不是值 void testing(int* arr){ cout << arr << endl; } int main() { int my_arr[]{ 4,7,1 }; testing(my_arr); string y; getline(cin, y); return 0; } 无效测试(int*arr){ cout,c++,arrays,function,pointers,C++,Arrays,Function,Pointers,要打印数组中的值而不是起始地址,需要使用循环 #include <iostream> #include <string> // note extra param for length of array. void testing(int* arr, int len){ for (int i = 0; i < len; ++i) std::cout << arr[i] << " "; std::cout <

要打印数组中的值而不是起始地址,需要使用循环

#include <iostream>
#include <string>

// note extra param for length of array.
void testing(int* arr, int len){
    for (int i = 0; i < len; ++i)
        std::cout << arr[i] << " ";
    std::cout << "\n";
}

int main()
{
    int my_arr[]{ 4,7,1 };
    testing(my_arr, 3);

    return 0;
}
#包括
#包括
//请注意数组长度的额外参数。
无效测试(内部*arr,内部len){
对于(int i=0;istd::cout要打印数组,可以使用数组索引或指针算法

void testing(int* arr, int len) {
    for (int ctr = 0; ctr < len; ctr++) {
        std::cout << *(arr + ctr) << std::endl;
    }
} 

int main()
{
    int my_arr[]{ 4,7,1 };
    testing(my_arr, 3);

    return 0;
}
无效测试(int*arr,int len){
对于(int-ctr=0;ctrtesting()
中,您试图使用
arr
元素而不使用其索引。 此处
arr
是该内存的唯一基本内存地址。要从中获取值,必须指定索引

void testing(int* arr, int len)
{
    for(int i = 0; i < len; i++)
    {
        cout << arr[i] << endl;
    }
}

错误告诉您需要知道的一切。
int*
不是指向int数组的指针。您确定没有使用
测试(&my\u arr)调用函数吗;
?这就是错误给我的建议。@KenY-N你是说
int*
与指向int数组的指针相同?你错了。指向int数组的指针是
int**
int*[]
,如错误中所示。“它一直给我数组的地址而不是值”。这是因为地址(第一项的,与数组地址相同)是您传递给流的内容。它精确地输出您告诉它要输出的内容。要输出数组值,请使用循环。它需要知道项的数量。阅读
int main()
{
    int my_arr[]{ 4,7,1 };
    testing(my_arr, sizeof(my_arr) / sizeof(int));
    return 0;  
}