Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# char[]c和char c[]的区别是什么?_C#_C++_Arrays_Char - Fatal编程技术网

C# char[]c和char c[]的区别是什么?

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[] 这在任何情况下都是不合法的 如果第一个是合法的,我可

正如我在标题中所写,我对如何声明字符数组感到困惑,搜索结果是

1.
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
有更显著的区别。它仍然只是一个指针,但您不会手动分配它。它有其优点和局限性

无论如何,char】[C]/COD>,即使编译器中的语法正确(可能是在C++中.NET),对于C/C++来说是一个坏的记号,因为它暗示变量的“ARAURILY”在“类型”中,这不是真的。 通常的例子是这样的;在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;