[英]C variable declarations
#include <stdio.h>
int main(void){
char c1[], c2[];
c1 = "hello";
c2 = "world";
printf("%s %s", c1, c2);
return 0;
}
是什么使我不能使用'char c1 [],c2 []'? 我對Java有一定的了解,並且我發現C語法相當熟悉,但是顯然有些東西不起作用。
還有什么理由將char聲明為char variable []而不是char [] variable? 這樣似乎更有意義(Java表示法)
這個:
char c1[]
表示“長度未知的字符數組”。 盡管可以將未知長度的數組用作函數的參數,但是您無法創建長度未知的數組,如下所示:
void foo(char c1[])
如果隱式知道長度,也可以創建它們,如下所示:
char c1[] = "hello"; // size is 6, including null terminator
對此:
還有什么理由將char聲明為char variable []而不是char [] variable?
一直都是這樣。 我確信C程序員認為Java方式也沒有道理。 40年前用語言語法做出的決定今天沒有被有用地辯論。
確切地說,該代碼不是聲明,而是定義。 在C語言中,您無法定義將長度留空的數組,可以顯式指定它:
char c1[6] = "hello";
或者您可以隱式地執行此操作:
char c1[] = "hello";
如果僅在運行時才知道數組的長度,請使用分配的數組:
size_t n = <calculate the size needed>;
char *c1 = malloc(n);
但是對於聲明,您可以執行如下外部聲明:
extern char c1[];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.