C语言中怎样才能将这个结构体的指针传入函数中 struct _DEVICE_LIST device_socket[1000];

大神们,打扰一下,C语言中怎样才能将这个结构体的指针传入函数中 struct _DEVICE_LIST device_socket[1000];
最新回答
薄荷微光

2024-09-08 13:24:20

这是一个结构体数组
直接把device_socket传进去 类型是struct _DEVICE_LIST * 这样数组全都传进去了,,可以用device_socket[i] 把所有的都找到
也可以一个一个的传 就是这样&device_socket[i] 只把第i个传进去
追问
我已经试过了,无果。

还请指导。
我需要传整个结构体数组的指针进去。
linux 环境
追答
就是传device_socke这个。,。。。还不行 代码发来我看看,,,函数入口那个地方
追问
int socket_server(struct _DEVICE_LIST *device)函数
调用 socket_server(&device_socket);
如果不传指针可以用,但是这样操作有N多错误!
麻烦你了。
追答
这个不加&
应该是这样socket_server(device_socket);
追问
我觉得很奇怪啊,我在函数里面改了,在函数外面读出来是对的,但在函数外面读却还是不对的。
参数好像没有被修改。请问知道是什么原因吗?
linux 环境 使用新的线程操作的,应该跟线程那些都没关系把。
追答
你在函数里面改的什么?你这样传的话 修改数组里面的数据是可以的,,别的也不用修改啊,,,
追问
struct _DEVICE_LIST
{
char *name;
char *id;
int socket;
char *ip;
char *device;
int status;
};
原型
struct _DEVICE_LIST device_socket[BACKLOG] = {
{"2200", "220", 0, "10.0.1.89", "2200", 1},
};
初始化
device[i].socket = socket;
device[i].status = Status_LINK; 函数内的操作
将参数打印出来发现修改成功,但在函数外面却发现参数没变。
刚刚发现因为我将指针进行了2次传递,修改无效。传递一次修改有效的
追答
看你这样 操作应该没啥问题  不会出现修改不了的情况啊
星雪伊

2024-09-08 12:51:31

你要传结构体数组的指针?
要看你函数怎么定义了。你的函数要定义成这样:
fun(struct _DEVICE_LIST dev[])
fun(device_socket)就是传整个数组了
寄纸筏

2024-09-08 14:24:53

#include <stdio.h>

struct sub{
struct sub* pointer;
int val;
}value;

void function(struct sub* temp_p)//结构体指针传入函数
{
temp_p->val=100;
}

int main()
{
function(&value);
printf("val=%d\n",value.val);
return 0;
}