【发布时间】:2016-01-21 11:43:08
【问题描述】:
我在 Mac OS X 10.11 上运行 Xcode 7.1。我试图在 C 中声明一个 VLA 数组,但我做不到。
第二次我在数组声明中使用了一个变量,它没有实际意义。未创建数组。我已经在编译器设置中进行了研究,尝试手动安装 GCC,但我无法弄清楚。谁能发现这个问题?据我了解,自 C99 以来 VLA 已成为标准,并且据我所知,我的 Xcode 正在 C11 上运行。这里有什么交易?包括代码和设置图像。
void printTriangle (int height, char rowPatterns[][height]) {
int rowSize = 2 * height - 1;
char rowString[rowSize]; //string to store in pattern's array
int characterCount = rowSize; //number of character printed per row of triangle
int asteriskCount = 1; //number of asterisks printed in each row
int spaces = (characterCount - asteriskCount) / 2; //how many spaces need to be printed in this current row
int rowCount;
// rest of the code...
}
【问题讨论】:
-
当您说声明“没有实际意义”时,您是什么意思?你得到编译器错误吗?运行时崩溃?出乎意料的结果?另外,如果你想在
rowString中存储一个字符串,不应该是rowSize + 1字节来适应字符串终止符吗? -
@DavidTamrazov 你怎么知道数组没有被创建?
-
在调试器中查看数组有问题吗?您可以使用例如打印数组的内容吗?
printf?也许调试器无法处理 VLA。真的,尝试从程序内部打印它。 -
你有没有尝试过
rowString[0] = 'A'; printf("rowString[0] = '%c'\n", rowString[0]);? -
那么只是调试器不显示值。数组正常工作。
标签: c xcode c11 variable-length-array