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编程语言”。