读书人

关于结构体引用的有关问题请大侠帮忙

发布时间: 2013-10-29 12:07:57 作者: rapoo

关于结构体引用的问题,请大侠帮忙。
是这样子的。
ptr[]表示每个数组存放一个ip地址;
一个函数 adcde_function(unsigned long *ptr[]);

我在用到这函数的时候:
定义结构体

typedef struct {
char ip[16];
} CD_STRUCT;

typedef struct {
int a;
CD_STRUCT itme[16];
} AB_STRUCT;

main()
{
//定义一个结构体变量
AB_STRUCT ptr_ip;
//这个函数用到的是
adcde_function(&ptr_ip.itme[16]);
}

关于adcde_function()函数里面的参数 我这边怎么引用?如上表示,对不对?如果错了还请高手帮忙解答下,为什么会这样!
[解决办法]
刚刚试了下,adcde_function( (unsigned long )&ptr_ip.itme ); 这样还是不行的。
改成这样应该可以adcde_function( (unsigned long** )ptr_ip.itme );
[解决办法]
int adcde_function(unsigned long *ptr[]);
这个函数的参数其实是一个指针数组,而你的参数传递方式

 adcde_function(&ptr_ip.itme[16]); 

且不谈ptr_ip.itme[16]已经发生越界,即使传的是ptr_ip.itme[15]这样也是不对的

unsigned long *ptr[],其实也就是二级指针,可以写成unsigned long** ptr;
所以你传参时,可以按照下面的方式传递:
adcde_function((unsigned long **)ptr_ip.itme); 

读书人网 >C语言

热点推荐