+ -
当前位置:首页 → 问答吧 → 最新手的问题,函数传值。

最新手的问题,函数传值。

时间:2011-12-16

来源:互联网

void test(int* it[])
{
int* its=it;
cout<<"it->a:"<<(*it[0])<<endl;
}

int main(void)
{
int a=1,b=2,c=3;
int *n[3]={&a,&b,&c};
test(n);
}

为什么int* its=it;
这句会出错?it是一个int型指针数组,难道不能用int型指针来接吗?

作者: seti3d   发布时间: 2011-12-16

不行,一个2级指针int**,一个一级指针int*不能隐式转换

作者: qscool1987   发布时间: 2011-12-16

C/C++ code

#include <iostream>
using namespace std;
void test(int* it[])
{
    int** its=it;//it是接收n,可以认为是二维数组,即是指针的指针
    cout<<"it->a:"<<(*it[0])<<endl;
}

int main(void)
{
    int a=1,b=2,c=3;
    int *n[3]={&a,&b,&c};
    test(n);
}


作者: shenxinji   发布时间: 2011-12-16

对于char 型是可以的,int型貌似不行的说!!!

作者: timerfire   发布时间: 2011-12-16

引用 3 楼 timerfire 的回复:

对于char 型是可以的,int型貌似不行的说!!!

char也是不行的,二级指针不能隐式转换成一级指针

作者: shenxinji   发布时间: 2011-12-16

那要怎么改?
在Test函数里,用什么类型来接it参数。

作者: seti3d   发布时间: 2011-12-16

引用 5 楼 seti3d 的回复:
那要怎么改?
在Test函数里,用什么类型来接it参数。

C/C++ code

#include <iostream>
using namespace std;
void test(int* it[])
{
    int** its=it;//it是接收n,可以认为是二维数组,即是指针的指针
    cout<<"it->a:"<<(*it[0])<<endl;
}

int main(void)
{
    int a=1,b=2,c=3;
    int *n[3]={&a,&b,&c};
    test(n);
}


作者: shenxinji   发布时间: 2011-12-16

it的类型是指向指针的指针,而its是指针,当然不能赋值了。

作者: yusss   发布时间: 2011-12-16