我是C新手,這些指針的概念對我來說非常混亂。我試圖做一些看起來很簡單的事情,但是我收到了很多編譯錯誤。我想創建一個新的線程,並將它作爲參數傳遞給多個指針(看起來像你可以在c中使用全局變量的唯一方法就是通過指針),所以我創建了一個結構來存放所有這些指針,但是它不管我改變什麼,似乎都不會編譯。C - 將多個指針作爲參數傳遞給pthread_create
這裏是我的代碼(我拿出大部分的代碼,除了在我的問題似乎是)
//want to store the pointers in pointers, so when I change a pointer it changes the "global" variable
void request_handler(params *parameters) {
params parameter = *parameters;
int *numberOfOtherServers = parameter.numberOfServers;
int *clientSock = parameter.clientSock;
char ***serverList = parameters.serverList;
struct function **functionList[10] = parameters.functionList[10];
}
typedef struct {
int *clientSock;
int *numberOfServers;
char **serverList;
struct function *functionList[10];
} params;
struct function {
char name[20];
int parameterNumer;
int canDo;
char *otherServers[10];
};
int main(int argc, const char * argv[])
{
int client_sock_desc;
pthread_t handler_thread;
struct function functionList[10] = {{"",0, 0, {}}};
int i =0, numberofOtherServers;
char *serverList[10];
//create a struct to pass as the parameters
struct params parameters;
parameters.clientSock = &client_sock_desc;
parameters.functionList[10] = functionList;
parameters.numberOfServers = &numberofOtherServers;
parameters.serverList = serverList;
//create a thread for the new clients request to be handled
if(pthread_create(&handler_thread, NULL, request_handler, parameters) != 0) {
perror("pthread_create failed");
}
}
C是迄今爲止最凌亂的語言,如果使用過。這個任務應該是如此簡單,但我很遺憾,因爲猜測有多少*或者我應該放一個變量來調用它。
「(似乎你可以在c中使用全局變量的唯一方法就是通過指針)」 - *** ??? *** – 2013-04-20 05:58:35
是的。我不知道如何更改我在函數request_handler – user2158382 2013-04-20 06:00:36
中主要聲明的變量,從我目前閱讀的內容來看,C沒有全局作用域變量 – user2158382 2013-04-20 06:00:55