如何x指针指向的两个数据段?
我试过这个,基于stackoverflow上类似的解决方案,但输出不是我的预期.
这是代码:
void printXor(){
int j;
char* c = strdup("hey");
for(j = 0; j < strlen(c); j++){
c[j] ^= c[j];
}
printf("%d\n", *(int*)(c));
}
Run Code Online (Sandbox Code Playgroud)
但输出是:7955712.输出不应该是0吗?我对"嘿"感到"嘿",它在int中的值是0吗?
看看这个循环:
for(j = 0; j < strlen(c); j++) {
c[j] ^= c[j];
}
Run Code Online (Sandbox Code Playgroud)
您正在使用修改c和计算其长度strlen.在第一个迭代器strlen返回0并且循环停止之后.
如果你翻译7955712成十六进制,那就是0x796500.0x79是代码'y',0x65是'e'最低有效字节的代码0x00.因为你在一个小端机器上运行它,你得到一个空字符串.
| 归档时间: |
|
| 查看次数: |
126 次 |
| 最近记录: |