C/C++中通过指针参数返回多个值

文章目录


C\C++中可以通过传递指针的方式来达到返回多个参数的效果,对于数组也可以用参数指针修改指向,而初学者容易犯的错误就是直接传递参数,最近我也犯了这个错误,下面通过一个例子解释数组指针的修改

#include 
using namespace std;
void sendAndChangeArray(int **addrOfArr) {
    int arr1[] = {1, 2, 3, 4};
    *addrOfArr = arr1;
    for (int j = 0; j < 4; ++j) {
        cout<<*((*addrOfArr)+j)<<" ";
    }
    cout<

输出结果如下,因为局部变量arr1离开函数后就被回收了,main里面读到的是脏数据.
C/C++中通过指针参数返回多个值_第1张图片
如果返回nt*呢,也是不行的,会报null错误.

int * sendAndChangeArray() {
    int arr1[] = {1, 2, 3, 4};
    return arr1;
}
int main() {
    int *arr1= sendAndChangeArray();
//    sendAndChangeArray(&arr1);
        for (int j = 0; j < 4; ++j) {
            cout<

正确的做法是先初始化参数,在传入指针

#include 
using namespace std;
int * ChangeArray(int *addrOfArr) {
    for (int i = 0; i < 4; ++i) {
        *(addrOfArr+i)=i+1;
    }
}
int main() {
    int *arr1;
//    arr1= sendAndChangeArray();
//    sendAndChangeArray(&arr1);
    arr1= new int[4];
    ChangeArray(arr1);
        for (int j = 0; j < 4; ++j) {
            cout<

二维指针一般是在搜索全局参数时候使用的如下例子

#include 
using namespace std;
int arr[] = {1,2,3,4};
void searchArr(int** ans){
    *ans = arr;
}
int main() {
    int *arr1;
    searchArr(&arr1);
        for (int j = 0; j < 4; ++j) {
            cout<

你可能感兴趣的:(C/C++中通过指针参数返回多个值)