获取char*缓冲区中的第一个字节

kal*_*kal 6 c c++

我有一个char*缓冲区,我有兴趣查看char*缓冲区中的第一个字节,最佳方法是什么.

编辑:根据负面投票,我可能想解释为什么这个问题,我知道方法,但在代码库,我一直在寻找获得第一个字节的人做各种疯狂的事情,如做一个缓冲区的副本,将其复制到流中然后执行get.

Joh*_*iss 18

只是用

char firstByte = buffer[0];
Run Code Online (Sandbox Code Playgroud)


Ecl*_*pse 13

或这个:

char firstByte = *buffer;
Run Code Online (Sandbox Code Playgroud)

为了澄清,有没有什么区别*bufferbuffer[0],因为后者是真的只是简写*(buffer + 0*sizeof(char)),任何编译器将是足够聪明,替换成*(buffer+0)*buffer.因此,在您使用它的上下文中,选择实际上是最清楚的,而不是每个选项的效率.


Luc*_*eis 5

char *buffer = {'h','e','l','l','o','\0'};
Run Code Online (Sandbox Code Playgroud)

要么:

char *buffer = "hello";
Run Code Online (Sandbox Code Playgroud)

要么:

char buffer[6] = {'h','e','l','l','o','\0'};
Run Code Online (Sandbox Code Playgroud)

并得到第一个字节:

char firstChar = buffer[0];
Run Code Online (Sandbox Code Playgroud)

要么:

char firstChar = *buffer; // since the buffer pointer points to the first element in the array
Run Code Online (Sandbox Code Playgroud)