回 帖 发 新 帖 刷新版面

主题:字符指针赋值给整型指针问题

如下代码:
void main(void)
{
    char a[10] = {0,1,2,3,4,5,6,7,8,9};
    int *ptr;
    
    ptr = (int*)a;

    printf("*ptr = %d\r\n",*ptr);
    printf("*(ptr+1) = %d\r\n",*(ptr+1));
 }

本以为输出为0和4,但是却输入乱七八糟的值,请问各位大侠这是什么原因,谢谢

回复列表 (共4个回复)

沙发

char占一个字节, int占四个字节,所以...

板凳

你把那“乱七八糟的值”换成十六进制看看

3 楼

ls的意思就是楼主把:
    printf("*ptr = %d\r\n",*ptr);
    printf("*(ptr+1) = %d\r\n",*(ptr+1));
改成:
    printf("*ptr = %x\r\n",*ptr);
    printf("*(ptr+1) = %x\r\n",*(ptr+1));
然后就知道了:)

4 楼

不过这个输出的结果因系统而定:)

我来回复

您尚未登录,请登录后再回复。点此登录或注册