我有一个char*缓冲区,我有兴趣查看char*缓冲区中的第一个字节,最佳方法是什么.
编辑:根据负面投票,我可能想解释为什么这个问题,我知道方法,但在代码库,我一直在寻找获得第一个字节的人做各种疯狂的事情,如做一个缓冲区的副本,将其复制到流中然后执行get.
只是用
char firstByte = buffer[0];
或这个:
char firstByte = *buffer;
为了澄清,有没有什么区别*buffer
和buffer[0]
,因为后者是真的只是简写*(buffer + 0*sizeof(char))
,任何编译器将是足够聪明,替换成*(buffer+0)
后*buffer
.因此,在您使用它的上下文中,选择实际上是最清楚的,而不是每个选项的效率.
char *buffer = {'h','e','l','l','o','\0'};
要么:
char *buffer = "hello";
要么:
char buffer[6] = {'h','e','l','l','o','\0'};
并得到第一个字节:
char firstChar = buffer[0];
要么:
char firstChar = *buffer; // since the buffer pointer points to the first element in the array