2013-07-27 33 views
-4

出現了一個奇怪的問題,我已經看了這個超過一百萬次,但我認爲我的頭正在搞亂我,只是一個簡單的問題,我在頭First C我得到一個令牌或「(」之前所需的「{」錯誤,當我嘗試編譯和運行。找不到在哪裏?找不到錯誤,但簡單但卡住

它說在第5行我想但是是的,任何人告訴我什麼問題?是我知道這將是真正的簡單,但我的大腦與我搞亂

代碼:

#include <stdio.h> 
#include <stdlib.h> 

void go_south_east(int lat, int lon); 
{ 
    lat = lat - 1; 
    lon = lon + 1; 
} 

int main() 
{ 
    int latitude = 32; 
    int longitude = -64; 
    go_south_east(latitude, longitude); 
    printf("Avast! Now at: [%i, %i]\n", latitude, longitude); 

return 0; 
} 

是的,我知道有」這是一個問題,它不會指向正確的位置,一旦運行後價值不會改變,但這只是想法,瞭解指針,這是第一項任務,但我無法獲得這一塊編譯:(

謝謝你們,你是最棒的!

+0

我總是希望(普通)錯誤是由編譯器更明確的闡述。 – Jiminion

+0

@Jim我一直希望人們閱讀錯誤信息並看看行號... – 2013-07-27 08:50:29

回答

1

你有多餘的;

void go_south_east(int lat, int lon); 
            ^remove 

它應該是:

void go_south_east(int lat, int lon) 
{       //  ^removed 
    lat = lat - 1; 
    lon = lon + 1; 
} 
1

C是仍然一個傳遞價值的語言。如果你想有一個函數能夠修改其參數,你必須指針傳遞給他們:

void foo(int *p) 
{ 
    ++*p; 
} 

(還要注意使用++遞增運算符,它是地道的寫增量和減量這樣,lat = lat - 1;被認爲是多餘地詳細)

(更不用說當然語法錯誤,其中甚至不允許你的代碼編譯...)

+0

看了我說的嗎?大聲笑。我知道這個代碼的改進,這是我正在閱讀的內容,我只是想知道我在這段代碼中做了什麼錯誤,這只是指針部分的第一個練習,解釋了我們需要使用指針的方式。感謝解決方案的人。 – spergalerger

+0

是的,我知道它是什麼線,但不知道錯誤是什麼,我的壞。我是新的:) – spergalerger

+0

@spergalerger嗯,我很習慣這些類型的錯誤:)這不是很清楚我對你的問題的某些部分是什麼意思,無論如何。 :) – 2013-07-27 09:12:20

0

有兩個問題在你的代碼:

1) void go_south_east(int lat,int lon); 最後從上面刪除分號。

2)您只將變量值傳遞給該函數。

在你的代碼做變量值中存在功能的變化不會反映在調用函數

相關問題