如何允许我在C语言中执行以下操作?
char * string;
size_t string_len;
unsigned int idx;
for (idx=0; (string=src[idx]) != NULL; idx++) {
size_t string_len = strlen(string);
if (!(dest[idx] = malloc(string_len + 1))) {
perror("Failed to copy string value");
exit (EXIT_FAILURE);
}
dest[idx] = string;
}
是否应该在第6行重新声明size_t
会引发错误,就像我要重新声明int idx
一样?
答案 0 :(得分:2)
当您在两个不同的作用域中定义具有给定名称的变量时,实际上是在定义两个具有相同名称的独立变量,而内部作用域中的变量掩盖了外部范围。这是完全合法的。
但是,如果您尝试在文件作用域之外的相同作用域中定义两个具有相同名称的变量,则会出现错误。在文件范围内,您可能有多个声明,但只有一个定义,即,只有其中一个可以初始化变量。