这是一个很简单的问题,但是下面的函数原型是什么意思呢?
int square( int y, size_t* x )
size_t* 的剂量是什么意思?我知道 size_t 是一种数据类型(int >=0)。但是我如何阅读它所附的 * 呢?它是指向 x 的内存位置的指针吗?总的来说,我在处理这些东西时遇到了麻烦,如果有人可以提供方便的参考,我将不胜感激。
谢谢大家。我理解指针是什么,但我想我很难理解指针和函数之间的关系。当我看到函数原型定义为int sq(int x, int y)
,那么我就完全清楚发生了什么。然而,当我看到类似的东西时int sq( int x, int* y)
,那么我一生都无法理解第二个参数的真正含义。在某种程度上,我理解这意味着“传递指针”,但我对事情的理解不够好,无法自己操纵它。
怎么样一个教程理解指针 http://www.geekpedia.com/tutorial44_Understanding-Pointers.html?
然而,在这种情况下,指针可能用于修改/返回值。在 C 语言中,函数可以返回值有两种基本机制(请原谅这个愚蠢的例子):
可以直接返回值:
float square_root( float x )
{
if ( x >= 0 )
return sqrt( x );
return 0;
}
或者它可以通过指针返回:
int square_root( float x, float* result )
{
if ( x >= 0 )
{
*result = sqrt( result );
return 1;
}
return 0;
}
第一个叫做:
float a = square_root( 12.0 );
...而后者:
float b;
square_root( 12.00, &b );
请注意,后一个示例还允许您检查返回的值是否真实——这种机制广泛用于 C 库中,其中函数的返回值通常表示成功(或失败),而值本身则表示成功。通过参数返回。
因此对于后者你可以写:
float sqresult;
if ( !square_root( myvar, &sqresult ) )
{
// signal error
}
else
{
// value is good, continue using sqresult!
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)