我有一个char*缓冲区,我有兴趣查看char*缓冲区中的第一个字节,最佳方法是什么.
编辑:根据负面投票,我可能想解释为什么这个问题,我知道方法,但在代码库,我一直在寻找获得第一个字节的人做各种疯狂的事情,如做一个缓冲区的副本,将其复制到流中然后执行get.
Ecl*_*pse 13
或这个:
char firstByte = *buffer;
Run Code Online (Sandbox Code Playgroud)
为了澄清,有没有什么区别*buffer和buffer[0],因为后者是真的只是简写*(buffer + 0*sizeof(char)),任何编译器将是足够聪明,替换成*(buffer+0)后*buffer.因此,在您使用它的上下文中,选择实际上是最清楚的,而不是每个选项的效率.
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)