簡體   English   中英

C變量聲明

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM