-4

遇到了一个奇怪的问题,我已经看了超过一百万次,但我认为我的头脑在搞乱我,只是我在 Head 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;
}

是的,我知道它不会指向正确的位置并且值在运行后不会改变这一事实存在问题,但这只是想法,学习指针,这是第一个任务,但我不能让这件作品编译:(

谢谢各位,你们是最棒的!

4

3 回答 3

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;
}
于 2013-07-27T08:44:40.207 回答
1

C 仍然是一种按值传递的语言。如果您希望函数能够修改其参数,则必须将指针传递给它们:

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

(还要注意++增量运算符的使用,像这样编写增量和减量是惯用的,lat = lat - 1;被认为是多余的冗长。)

(当然更不用说语法错误了,它甚至不允许你的代码编译......)

于 2013-07-27T08:47:59.660 回答
0

您的代码中有两个问题:

1) 无效 go_south_east(int lat, int lon); 从最后一行删除分号。

2)您只将变量值传递给函数。

对代码中存在的函数内部变量值所做的更改不会反映在调用函数中

于 2013-07-27T09:06:25.470 回答