正如我在標題我很困惑如何聲明char數組寫的,並從搜索結果是char [] c和char c []有什麼區別?
1. char[] c
2. char c[]
第二個是類似於因爲我在大學學到了。如果第一個是合法的,我可以做一些像char[5] c
?
正如我在標題我很困惑如何聲明char數組寫的,並從搜索結果是char [] c和char c []有什麼區別?
1. char[] c
2. char c[]
第二個是類似於因爲我在大學學到了。如果第一個是合法的,我可以做一些像char[5] c
?
在c#方面:
char[] c
這是一個普通的字段或局部聲明,聲明c
是char[]
型。
char c[]
這在任何情況下都是不合法的。
如果第一個是合法的,我可以做點像
char[5] c
?
通常情況下,你會做這樣的事情:
char[] c = new char[5];
或相同:
var c = new char[5];
的char[5] c
語法你引用無效。有是語法fixed char c[5]
- 但這不是陣列 - 這是一個固定緩衝(其中c
現在是一個不安全char*
指針保留塊中的unsafe struct
足夠5個char
值,所以10字節大)。
非常感謝答案,我誤解了有關C++和C#的問題。 – logger
char[]
c是錯誤的。如果您在visual studio中嘗試使用char[5] c
,將會出現如下錯誤:
空的屬性塊是不允許的。
我認爲只有char c[]
是正確的。
在C(++)世界:
這取決於你的編譯器是如何寬容很多。在某些情況下,[]
只不過是一種更有意義的寫作方式*
。 C風格的數組不是「真正的」數組,它們只是指向一組隱含類型數據的第一個元素的指針。
隨着代碼所示的移位到更意圖,之間的差異(對於許多人來說,甚至可能是大多數編譯器,其是無效的),並char c[]
炸燬多一點的簡單char *c
和char []c
。也就是說,這不是技術限制 - 它仍然只是一個指針,您可以使用c[5]
與char *c
與char c[]
相同的方式。
稍微不同的變體是一個靜態長度的數組,例如。 char c[5]
。這與簡單的char *c
有更大的區別。它仍然只是一個指針,但不會手動分配它。它有其優點和侷限性。
在任何情況下,即使它在編譯器(它可能在C++ .NET中)在語法上是正確的,在C/C++中也是不好的,因爲它意味着「數組性「的變量是在」類型「中,這實際上並不正確。
通常的例子是這樣的;在C#:
char[] a, b;
聲明兩個字符數組,a
和b
。然而,在C中:
char* a, b;
聲明一個字符指針和一個字符變量。
這就是說,我可以相信它是C++。NET/C++/CLI中的有效和正確的方法。如果它遵循.NET標準,那很可能。
一個巨大的免責聲明:不要混淆不同的C語言風格。他們往往是非常不同的。特別是C#是非常不同的,很多語法都改變了,相同的關鍵字可能意味着完全不同的東西。 C++建立在C之上(所以C代碼主要用於C++),對於例如C++也是如此。 Objective-C的。 C#完全站在這個環境之外。這不是一個延伸,它只是受到一些風格(例如大括號)的啓發,但卻非常不同。最後,它可能更接近於(Object)Pascal,而不是C(++),儘管它在視覺上看起來更接近於C.
當您嘗試'char [5] c'時會發生什麼? –
我現在不能嘗試,現在我正在講課,而不是在實驗室。 – logger
因爲我正在學習編程的基礎知識,講師正在談論數組。我在4年前學過C++。現在我所搜索的內容都與c#有關。 – logger