在看<深入理解计算机操作系统>,遇到下面的代码:
typedef unsigned char* byte_pointer;
void show_bytes(byte_pointer start, int len){
int i;
for( i = 0; i < len; ++i )
printf(" %.2x", start[i]);
printf("\n");
}
这段代码用来打印不同类型数据的字节表示
int x = 100;
show_bytes((byte_pointer)&x, sizeof(int));
const char* s = "abcdef";
show_bytes((byte_pointer)&x, sizeof(s));
对于整型,浮点型等数据,书中提到在不同的系统中,即大端和小端系统中,字节表示是不相同的.但是,对于字符串类型,书中有如下描述:
在使用ASCII码作为字符码的任何系统上都将得到相同的结果,与字节顺序和字大小规则无关.因而,文本数据比二进制数据具有更强的平台独立性.
我的问题是,为什么字符串就会得到相同的结果?仅仅是因为ASCII码只需要一个字节就可以表示? 有点想不明白
你的问题在于:sizeof(字符串指针),永远都会是一样,因这是一个指针的长度,而不是字符串的长度,字符串的长度来用strlen(字符串指针)来获取,如果是字符串数组,如char a[10], sizeof(a)才会是10.