Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 函数声明中的常量_C_Arrays - Fatal编程技术网

C 函数声明中的常量

C 函数声明中的常量,c,arrays,C,Arrays,在函数调用中声明为 int addTax(const int* anArray, int* pNewArray) { for(int i = 0; i < (sizeof(anArray)/sizeof(int); i++) { /* Not important code */ } return *pNewArray; } int addTax(常量int*anArray,int*pNewArray) { 对于(int i=0;i

在函数调用中声明为

int addTax(const int* anArray, int* pNewArray)
{
    for(int i = 0; i < (sizeof(anArray)/sizeof(int); i++)
    {
         /* Not important code */  
    }
    return *pNewArray;
}
int addTax(常量int*anArray,int*pNewArray)
{
对于(int i=0;i<(sizeof(anArray)/sizeof(int);i++)
{
/*不重要代码*/
}
返回*pNewArray;
}

与作为返回参数的
*pNewArray
相比,
const int*anArray
参数中的
const
是否保证它只是一个输入参数?

我可能误解了一些东西,但如何创建返回参数

const
用于指示这样标记的变量不得更改。但是,当使用指针时,情况并非如此。仍然可以更改指针指向的对象的值

这段代码真的很奇怪。你返回一个指向
int
的指针,但函数说它只返回一个
int
。正如注释中提到的,你的代码甚至不会编译

const int*anArray参数中的const是否保证它只是一个输入参数


这里的
const
限定符意味着函数将不会使用
anArray
指针来修改它指向的对象。

该对象如何编译?
pNewArray
缺少类型。它所保证的是您无法写入
*anArray
。请注意,
sizeof
hack无法工作(
anArray
在此上下文中是一个指针,而不是数组;您不会得到数组元素的数量)。是的,您需要
*pNewArray
的类型。第一行应该是
intaddtax(const int*anArray,int*pNewArray)吗
?谢谢,John,我不知道。是的,Hurkyl,很抱歉,我忘了声明*pNewArray的数组点。这本书非常混乱……根据对结果的描述,它应该在pNewArray元素[I]中存储新的税值然后返回新数组的地址。:S这本书太差劲了,老实说,我不知道大学为什么会选择这本书。如果
pNewArray
的类型是
int*
,那么
return*pNewArray
确实返回了
int
,而不是指向
int
的指针。尽管如此,代码仍然非常奇怪和混乱。通过输出参数“返回”是一种众所周知的技术,但显示的代码至少不能做到这一点。@whitelotus,不知道你在说什么书。你最好读一本由Dennis Ritchie和Brian Kernighan写的书,“C编程语言”。