c - 仅在 C 中使用指针打印字符串数组

标签 c arrays

<分区>

我定义了一个常量字符串数组作为

static const char *Props[] = {"Cp", "Cv", "Mu", "H"};

执行以下命令时出现错误:

while(*Props) printf("%s\n", *Props++);

错误信息是:

C/test.c:38:45: error: lvalue required as increment operand

有人可以解释为什么我会收到此错误吗?

最佳答案

数组指示符是不可修改的左值。您可能无法更改它们。您需要的是以下内容

static const char *Props[] = {"Cp", "Cv", "Mu", "H"};

for ( size_t i = 0; i < sizeof( Props ) / sizeof( *Props ); i++ )
{
    puts( Props[i] );
}

另一种方法是向数组添加标记值。例如

static const char *Props[] = {"Cp", "Cv", "Mu", "H", NULL };

for ( const char **s = Props; *s; s++ )
{
    puts( *s );
}

关于c - 仅在 C 中使用指针打印字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40914122/

相关文章:

计算触发器

c - 在 C99 模式之外使用的“for”循环初始声明

c - 为什么这段代码会抛出段错误

python - 将 numpy 数组从值转换为索引

java - 对整数数组进行排序,同时它具有用于记分板的字符串数组

javascript - jScript - 如何 "mirror"矩阵(多维数组)

c++ - 如何在选择不同类型的容器之间做出决定?

java - 二维构造区域几何的最佳工具

c - 使用指针替换字符串中的字符

python - 数组和向量的 numpy 逐元素乘法