如何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 次 |
最近记录: |