LPG*_*LPG 0 c arrays typedef c99
我知道我可以在C中定义数组类型,如下所示:
typedef int array_t[123];
Run Code Online (Sandbox Code Playgroud)
然而,这并没有作出声明
void someFunction(array_t myArray)
Run Code Online (Sandbox Code Playgroud)
在这个意义上是恒定的
myArray=0;
Run Code Online (Sandbox Code Playgroud)
在函数内被禁止,但是
myArray[0]=0;
Run Code Online (Sandbox Code Playgroud)
被允许.
有没有办法实现这个目标?如果我在类型定义或参数声明中添加"const",我最终会得到反向行为,其中数组元素是常量,但数组指针本身是可变的.
无论如何,你永远不能分配给数组变量.当数组衰减到指针时,只要它没有衰减,它就没有指针,所以你无法分配它.
如果要将所有数组设置为特定值,请使用memset,或者如果要复制另一个数组,请使用memcpy.
编辑后.这里要记住的重要一点是,如果将它作为参数传递,那么它将作为指针而不是数组传递.
你可以做的是将参数声明为常量指针而不是指向常量的指针.
喜欢
void someFunction(int * const myArray);
Run Code Online (Sandbox Code Playgroud)
然后你仍然可以修改元素,但你不能改变实际的指针.
| 归档时间: |
|
| 查看次数: |
173 次 |
| 最近记录: |