c - 缺少声明标识符

标签 c

我之前有一个关于这个主题的问题,但我想到了这个错误,而且我似乎没有注意到它有什么问题。我认为这可能在于将 args 分配给字符串。

编辑:

void replace(char* string_a, char* string_b, char* string_f)
{
}

int main(int argc, char *argv[])
{
     if(argc < 4)
     { 
         printf("Not enough arguments\n");
         return 0;
     }

     replace(argv[1],argv[2],argv[3]);
}

奇怪的是 main 函数必须在 replace 函数之后,否则编译器会报错。我必须查明原因。

最佳答案

这不是有效的 C:

 char string_a[] = argv[1];

在编译时,编译器永远无法计算出应该需要多少内存来存储argv[1]。所以这是不可能的。

但是,argv[1] 是一个指针,您可以将正确类型的变量分配给指针。所以你可以这样做:

const char *string_a = argv[1];

但是,argv[1]string_a 现在都由完全相同的内存块支持。 (而且这个内存很可能是只读的)。

关于c - 缺少声明标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12587552/

相关文章:

c - 为什么标准 C 库中没有像 realloc() 这样不复制数据的函数?

c - sprintf 的什么输入会产生 0 个结果?

c++ - 椭圆与修改一个轴的线相切

c++ - LPCSTR 没有 'long' 并且 UINT_PTR 没有指针?

c - 高级语言的低级能力

c - 为什么 sha1 会为相同的输入字符串返回不同的哈希值?

c - 从文件初始化嵌套结构的值

c++ - 函数内联——有哪些损害性能的例子?

c - 下面的表达式会输出什么,为什么?

c - 如何更改 gdb 中的值