当前位置: 技术问答>linux和unix
为什么是这个结果呢?
来源: 互联网 发布时间:2017-01-09
本文导语: /* example1.c */ #include #include #include int main() { int i = 0x12345678; /* 以低位字节优先方式存储,即0x78 0x56 0x34 0x12 */ int *p = &i; char h = *((char *)p); /* 将i的高位字节赋给h */ printf("i = 0x%xn",...
/* example1.c */
#include
#include
#include
int main()
{
int i = 0x12345678; /* 以低位字节优先方式存储,即0x78 0x56 0x34 0x12 */
int *p = &i;
char h = *((char *)p); /* 将i的高位字节赋给h */
printf("i = 0x%xn", i);
printf("h = 0x%xn", h);
int j = htonl(i); /* 转换为以高位字节优先方式,即0x12 0x34 0x56 0x78 */
printf("j = 0x%xn", j);
return 0;
}
运行结果是:
i=0x12345678
h=0x78
j=0x78563412
对h=0x78表示不解
char h = *((char *)p)是什么意思啊?
还有%x是哪种类型的通配符啊?
#include
#include
#include
int main()
{
int i = 0x12345678; /* 以低位字节优先方式存储,即0x78 0x56 0x34 0x12 */
int *p = &i;
char h = *((char *)p); /* 将i的高位字节赋给h */
printf("i = 0x%xn", i);
printf("h = 0x%xn", h);
int j = htonl(i); /* 转换为以高位字节优先方式,即0x12 0x34 0x56 0x78 */
printf("j = 0x%xn", j);
return 0;
}
运行结果是:
i=0x12345678
h=0x78
j=0x78563412
对h=0x78表示不解
char h = *((char *)p)是什么意思啊?
还有%x是哪种类型的通配符啊?
|
对h=0x78表示不解
-->h取得的是存放i变量的那个地址的最低字节,你在上面已经写出了i变量的排序了,当然是0x78。
char h = *((char *)p)是什么意思啊?
-->p指向i变量的那个地址(此时p是指向整型的指针),然后将p强制转换成指向char的指针,再取这个指针的值,赋给h。h就是i变量最低字节的值了。
还有%x是哪种类型的通配符啊?
-->%x表示输出16进制数,其它如%d、%f、%u这些,请用google搜索printf。
如果对上面的字节顺序不了解,调试程序时,查看一下i变量那个地址数据就清楚了。
一家之言,错误之处,请见谅,并指正。
-->h取得的是存放i变量的那个地址的最低字节,你在上面已经写出了i变量的排序了,当然是0x78。
char h = *((char *)p)是什么意思啊?
-->p指向i变量的那个地址(此时p是指向整型的指针),然后将p强制转换成指向char的指针,再取这个指针的值,赋给h。h就是i变量最低字节的值了。
还有%x是哪种类型的通配符啊?
-->%x表示输出16进制数,其它如%d、%f、%u这些,请用google搜索printf。
如果对上面的字节顺序不了解,调试程序时,查看一下i变量那个地址数据就清楚了。
一家之言,错误之处,请见谅,并指正。
|
char h = *((char *)p)是什么意思啊
取指针p内容里的一个字节,p是指向i = 0x12345678的一个指针。
因为是x86,所以是小字节序,最低有效位存的是0x78.
%x是十六进制输出。
取指针p内容里的一个字节,p是指向i = 0x12345678的一个指针。
因为是x86,所以是小字节序,最低有效位存的是0x78.
%x是十六进制输出。
|
int *p = &i 是什么意思呢?
-->看C语言的书,里面有说明的。大意是指声明一个int类型的指针p,指向i的地址。
int* p
int *p
int * p
int * p
。。。
无区别
*p表示取指针的值,就是取值,没别的意思。
-->看C语言的书,里面有说明的。大意是指声明一个int类型的指针p,指向i的地址。
int* p
int *p
int * p
int * p
。。。
无区别
*p表示取指针的值,就是取值,没别的意思。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。