当我通读C代码时,我经常看到这样的情况:

int main(int argc, char **argv)

但我总是学着这样做:

int main(int argc, char *argv[])

那么,我为什么要用一个而不是另一个呢?我知道它们在技术上是不同的,但我不太明白为什么我会使用一个而不是另一个.

先谢谢你.

推荐答案

在功能上,为了访问参数,这两个表示法是等价的.

[]表示法在区分指向单个元素的指针和指向数组的指针方面可能具有边际优势;char**可能被误读为类型char*的输出参数.

不过,不太可能有main()英尺长的S argv.

C++相关问答推荐

如何将一个enum类型类型转换为另一个类型?

VS代码C/C++扩展intellisense无法检测环境特定函数'

将整数的.csv文件解析为C语言中的二维数组

SDL 2.0-从数组渲染纹理

为什么GCC在每次循环迭代时都会生成一个数组的mov&S使用[]访问数组?(-03,x86)

fwrite无法写入满(非常大)缓冲区

为静态库做准备中的奇怪行为

如何使用[BTStack]BLE发送大型(>;2kb)信息包

I2C外设在单次交易后出现故障

如何仅使用软件重新初始化STM32微控制器中的USB枚举?

用C++构建和使用DLL的困惑

如何在不读取整个字符串的情况下删除UTF8字符串的尾随空格以提高性能?

如何在C宏定义中包含双引号?

挥发性语义的形式化理解

浮点正零何时不全为零?

I';我试着从.txt文件中读取文本,并用c计算其中的单词数量

未为同一文件中的函数执行DirectFunctionCall

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

既然我们在 if 中将 int 的值更改为 10,为什么在第二个 fork 后,子进程及其创建的子进程都会打印 33 ?

尽管将其标记为易失性,但 gcc 是否优化了我的等待代码?