刚接触C,数组声明问题

C能声明动态数组吗?我所知是不行的,必须指定size
比如以下就会报错

string name[];

那么在以下main函数中,command line的参数又实现了声明动态数组

int main(int argc, string argv[])
{

}

请指教

阅读 1.8k
2 个回答

数组在一定程度上可以看做是指针的语法糖。所以动态数组实际上就是

char *name = malloc(100);

// when you need to extend your string
name = realloc(name, 200);

argv的变长,实际上跟字符串的变长差不多,是靠最后一个'\0'作为标志的。你可以想像成系统realloc到了正好够用的内存。

在函数的参数中出现的 [],实际上是指针。
就你给出的例子来言,和 int main(int argc, string *argv) 是等价的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进