我正在学习C的指针,并且从“Deitel”一书中,我没有得到int(*function)(int,int)和int*function(int,int)在函数表示时的区别。
发布于 2013-11-17 10:54:55
C中阅读类型的经验规则:
- in `int(*function)(int,int)`, "`function` is a..."
- in `int*function(int,int)`, "`function` is a..."
- in `int(*function)(int,int)`, you hit the parenthesis immediately.
- in `int*function(int,int)`, "... function that takes two parameters of type `int` and `int`..."
- in `int(*function)(int,int)`, "... pointer to ..."
- in `int*function(int,int)`, "... that returns a pointer to `int`."
- in `int(*function)(int,int)` we only read `(*function)` so far, so we continue: "... function that takes parameters of type `int` and `int`..." and backing up, "... that returns an `int`"
- we hit the end of the line in the other one.
把这一切结合在一起:
int(*function)(int,int)
function是指向一个函数的指针,该函数接受两个类型为int和int的参数,后者返回int
int*function(int,int)
function是一个函数,它接受int和int类型的两个参数,并返回指向int的指针。
发布于 2013-11-17 10:41:34
第一个是指向函数的指针,它接收两个int参数,第二个只是返回指针到int并接收两个int参数的函数。它是两个非常不同的编程实体。首先是数据类型,其次是代码(函数)。
发布于 2013-11-17 10:42:39
第一个是指向返回int的函数的指针。第二个是返回指向int的指针的函数的声明。
https://stackoverflow.com/questions/20029686
复制相似问题