C# C语言中字节数组的增量指针#
我有一个C# C语言中字节数组的增量指针#,c#,c++,arrays,pointers,unsafe,C#,C++,Arrays,Pointers,Unsafe,我有一个byte[]data,其中不需要第一个元素。数组非常大,所以我不想将它复制到另一个数组(有效负载),如下所示 Buffer.BlockCopy(数据,1,有效负载,0,计数) 在C++中,我可以只增加数组指针来移动Pooer-E/P> int main() { char* data= "!Hello, World!"; data++; std::cout << data<< std::endl; } intmain()
byte[]data
,其中不需要第一个元素。数组非常大,所以我不想将它复制到另一个数组(有效负载
),如下所示
Buffer.BlockCopy(数据,1,有效负载,0,计数)代码>
在C++中,我可以只增加数组指针来移动Pooer-E/P>
int main()
{
char* data= "!Hello, World!";
data++;
std::cout << data<< std::endl;
}
intmain()
{
char*data=“!你好,世界!”;
数据++;
std::cout数组的长度是不可变的,因此可以从索引1而不是0开始循环,也可以将其复制到另一个索引。数组的长度是不可变的,因此可以从索引1而不是0开始循环,也可以将其复制到另一个索引。
var data=newchar[]{'!'、'H'、'e'、'l'、'l'、'o'、''、'W'、'o'、'r'、'l'、'd'、'!';
foreach(数据[1..]中的var ch)Console.Write(ch);
Console.WriteLine();
给出:
你好,世界!
var data=newchar[]{'!'、'H'、'e'、'l'、'l'、'o'、''、'W'、'o'、'r'、'l'、'd'、'!';
foreach(数据[1..]中的var ch)Console.Write(ch);
Console.WriteLine();
给出:
你好,世界!通过对数组进行切片来使用span,数据。切片(1)
将创建一个span
,从数组的索引1开始,到最后一个元素结束。您可能需要首先将数组强制转换为span
,我不知道它是否隐含。因此它应该是((span)数据)。切片(1);
。这不会导致复制,它本质上是指向数组的安全指针。此外,如果效率重要,索引到Span
的速度应该与索引到数组的速度一样快。它是直接指针,而不是存储对数组的引用和偏移量/边界的ArraySegment
。通过切片数组使用Span,data.Slice(1)
将创建一个Span
,从数组的索引1开始,到最后一个元素结束。您可能需要首先将数组强制转换为Span
,我不知道它是否隐含。因此它应该是((Span)data)。Slice(1);
。这不会导致复制,它本质上是指向数组的安全指针。此外,如果效率很重要的话,索引到Span
的速度应该与索引到数组的速度一样快。它是一个直接指针,而不是存储数组引用和偏移/边界的ArraySegment
。