2016-08-14 93 views
-2

我是C編程新手,想了解基礎知識。任何人都可以幫助我如何調用一個參數是一個指針的函數嗎?C編程調用函數

,我在user.c文件中的代碼:

struct user * play_game(struct user * first, struct user * second) 
{ 
    game_board board; 
    enum cell token; 
    struct user * current, *other, *winner; 
} 

的代碼也是user.h文件,但沒有內部聲明。 我如何能夠在main.c文件中調用它?我不確定參數是什麼以及它是如何工作的。

+1

你有什麼瞭解了一元'&'和'*'運營商? main()'程序中變量的類型是什麼,因爲這將控制你如何調用函數。如果你有'struct user * u1 = ...; struct user * u2 = ...;'你將使用'struct user * winner = play_game(u1,u2);' - 但是如果你有'struct user u1 = {...}; struct user u2 = {...};''你將使用'struct user * winner = play_game(&u1,&u2);'。 –

+0

我的程序設計知識真的不好抱歉,我現在知道的是,如果一個變量有*我試圖在main()之前聲明struct user * play_game(struct user * first,struct user * second),並在其中放置代碼用戶* play_game (struct user * first,struct user * second)。不知道我是否可以用它來理解它。 – Gray

+0

您對'*'和'&的理解或多或少都是準確的 - 原始的,但可能對於假設你已經在某處定義了'struct user',那麼你應該使用你所展示的函數聲明,如果你得到一個編譯錯誤,你需要向我們展示一個MCVE([MCVE]) - 而實際錯誤信息,行號應該足夠小(例如在30以下),它是e對我們來說,看看發生了什麼問題。如果它不是那麼小的行號,代碼的可能性還不夠小。 –

回答

0

您應該在main.c中包含user.h,並在user.c中包含user.h,以便實現函數,在interface.h中聲明爲user.h。

在main.c中,給出兩個struct user*作爲函數的參數。 struct user *var是一個常用的指針類型變量,它包含一些地址值。要初始化此指針,您可以使用var = (struct user*)malloc(sizeof(*var))struct user a; var = &a結構。在第一種情況下,你在堆上分配新的結構,在第二種情況下,你得到在堆棧上創建的變量的地址。

代碼至極的一些例子調用你的函數:

struct user* result; 
struct user* param1 = (struct user*)malloc(sizeof(*param1)); 
/* initialize ...*/ 
struct user param2; 
/* initialize ...*/ 
result = play_game(param1, &param2);