Initializing a dynamically-sized Variable-Length Array (VLA) to 0

牧云@^-^@ 提交于 2020-01-21 07:14:07

问题


The following line of code, which creates a variable-length array on the stack:

char name[length] = {'\0'};

Generates the following compiler diagnostics:

error: variable-sized object may not be initialized
warning: excess elements in array initializer
warning: (near initialization for ‘name’)

What options are available to me for initializing VLAs? Am I forced to use a line such as:

memset(name, 0, sizeof(name));

Instead?


回答1:


Yes, you must write code for the initialisation of VLAs (which could be a memset() like you have described, or any other way that you care to).

It is simply a constraint in the C standard (§6.7.8):

  1. The type of the entity to be initialized shall be an array of unknown size or an object type that is not a variable length array type.


来源:https://stackoverflow.com/questions/4393779/initializing-a-dynamically-sized-variable-length-array-vla-to-0

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!