C# char[]c和char c[]的区别是什么?
正如我在标题中所写,我对如何声明字符数组感到困惑,搜索结果是 1.C# char[]c和char c[]的区别是什么?,c#,c++,arrays,char,C#,C++,Arrays,Char,正如我在标题中所写,我对如何声明字符数组感到困惑,搜索结果是 1.char[]c 2.charc[] 第二个和我很相似,因为我是在大学里学的。如果第一个是合法的,我可以做一些类似于char[5]c的事情吗?char[]c是错误的。如果在VisualStudio中尝试char[5]c,则会出现如下错误 不允许使用空属性块 我认为只有charc[]是正确的 在以下方面: 这是一个常规字段或本地声明,它将c声明为char[]类型 char c[] 这在任何情况下都是不合法的 如果第一个是合法的,我可
char[]c
2.charc[]
第二个和我很相似,因为我是在大学里学的。如果第一个是合法的,我可以做一些类似于
char[5]c
的事情吗?char[]
c是错误的。如果在VisualStudio中尝试char[5]c
,则会出现如下错误
不允许使用空属性块
我认为只有charc[]
是正确的 在以下方面:
这是一个常规字段或本地声明,它将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*
指针,指向一个不安全结构中的一个保留块
大到足以容纳5个char
值,所以是10个字节)。在c(++)世界中:
这在很大程度上取决于编译器的容忍度。在某些情况下,[]
只是一种更具意图的书写方式。C风格的数组不是“真正的”数组,它们只是指向一组模糊类型数据的第一个元素的指针
随着向代码中显示的更多意图的转变,简单的char*c
和char[]c
(这对许多编译器,甚至大多数编译器都无效)和char c[]
之间的差异被放大了一点。这就是说,这不是一个技术限制-它仍然只是一个指针,您可以使用c[5]
和char*c
的方式与char c[]
的方式相同
char c[]
稍有不同的变体是具有静态长度的数组,例如charc[5]
。这与简单的char*c
有更显著的区别。它仍然只是一个指针,但您不会手动分配它。它有其优点和局限性
无论如何,
a
和b
。然而,在C中:
char* a, b;
声明一个char指针和一个char变量
<> P>这是我相信C++和.NET/C++ +CLI中的有效和正确的方法。如果它确实遵循.NET标准,那么很有可能
一个巨大的免责声明:不要混淆不同的C风格语言。它们往往非常不同。特别是C#是非常不同的,很多语法都发生了变化,相同的关键字可能意味着完全不同的东西
C++是建立在C之上的(因此C代码主要在C++中工作),对于例如Objective-C也是如此。C#完全不在这个环境中。这不是一个延伸,它只是从一些风格(如卷发背带)的启发,但非常非常不同。最后,它可能比C(++)更接近(对象)Pascal,尽管从视觉上看它更接近C。当你尝试
char[5]C
时会发生什么?我现在不能尝试,我现在在上课,而不是在实验室。因为我在学习编程的基础知识,讲师在谈论数组。我以前学过C++ 4。现在我搜索的都是c语言。你知道它们是不同的语言吗?在一种语言中有效的语法在另一种语言中可能无效?下定决心,你问哪种语言?@ Logg我把标签从.NET改为C,因为其中只有一个是语言的很多答案,我误解了C++和C的问题。
char* a, b;