我是C语言的新手,所以我希望我使用的术语是正确的.我看到许多资源建议应该对函数参数使用VLA语法,这些参数应该是非空指针,如下所示

void foo(char bar[static 1])

意思是bar应该是指向字符的非空指针,因为指针会衰减.某些编译器可能会发出有关传递空指针的警告.

我想知道如何将该参数声明为指向const个字符的const指针.那么VLA的语法等价于什么呢

void foo(char bar* const)

这适用于指向const char的指针

void foo(const char bar[static 1])

void foo(const char const bar[static 1])

发出有关重复const的警告.

推荐答案

您需要将关键字const放在方括号内:

void foo(const char bar[static const 1])

这或多或少相当于:

void foo(const char * const bar)

C++相关问答推荐

librsvg rsvg_handle_get_dimensions获取像素大小与浏览器中的渲染大小没有不同

是否可以在C中进行D3 D12申请?

C指针算法在函数参数中的应用

如何一次获取一个字符

当execvp在C函数中失败时杀死子进程

#If指令中未定义宏?

GLIBC:如何告诉可执行文件链接到特定版本的GLIBC

ATmega328P EEPROM未写入

如何将常量char*复制到char数组

预先分配虚拟地址空间的区域

在Apple Silicon上编译x86的Fortran/C程序

在句子中转换单词的问题

为什么指针运算会产生错误的结果?

Cairo STM32MP1 cairo_Surface_WRITE_TO_PNG始终返回CAROLIO_STATUS_WRITE_ERROR

将多项式从文件.txt加载到终端时出现问题

如何在zOS上编译共享C库

计算时出现奇怪的计算错误;N Select K;在C中

将不同类型的指针传递给函数(C)

与指针的原始C数组或C++向量<;向量<;双>>;

gdb - 你能找到持有内部 glibc 锁的线程吗?