关于指针数组函数的一个问题
structdata*search(){structdata*b[10];return(*b);}我想定义一个指针数组函数最后返回该数组请问这样能到达效果么?...
struct data *search()
{
struct data *b[10];
return(*b);
}
我想定义一个指针数组函数 最后返回该数组 请问这样能到达效果么? 展开
{
struct data *b[10];
return(*b);
}
我想定义一个指针数组函数 最后返回该数组 请问这样能到达效果么? 展开
1个回答
展开全部
首先说关于你的返回值,根据你的定义是一个struct data的指针,但是你的return里呢?是*b,b是你定义的一个指针数组, 那*b就应该是你这个数组第一个值,相当于是b[0],这个显然不是你想要返回的值对吧.
再来看你想实现的问题,其实你要返回的是这个数组的首地址对吧,那显然应该用指向数组的指针,所以你还需要定义一个指向b的指针,把这个指针的值返回才对.
那么你用一这样一个指向数组的指针是不是就对了呢?再来看你定义这个指针数组的位置,是在函数内部,所以这个数组的有效域只是在这个函数内,这个函数结束时,这个数组也就被销毁了,所以当你在函数外读这个指针时,里面的值已经发生了改变,同样达不到你想要的效果.
综上所述:这样写是不正确滴
你要实现这样的效果只能在函数外定义数组,然后把数组传入函数进行修改.或是在函数内部用malloc开辟空间,但这样就不是用数组了.
再来看你想实现的问题,其实你要返回的是这个数组的首地址对吧,那显然应该用指向数组的指针,所以你还需要定义一个指向b的指针,把这个指针的值返回才对.
那么你用一这样一个指向数组的指针是不是就对了呢?再来看你定义这个指针数组的位置,是在函数内部,所以这个数组的有效域只是在这个函数内,这个函数结束时,这个数组也就被销毁了,所以当你在函数外读这个指针时,里面的值已经发生了改变,同样达不到你想要的效果.
综上所述:这样写是不正确滴
你要实现这样的效果只能在函数外定义数组,然后把数组传入函数进行修改.或是在函数内部用malloc开辟空间,但这样就不是用数组了.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询