Jacksturdy 发表于 2020-10-8 20:26:11

c语言求助

#include <stdio.h>

int main()
{
      int a = 0x1234;
      char *b = (char *)&a;

      if (*b == 0x12)
      {
                printf("大端!\n");
      }
      else
      {
                printf("小端!\n");
      }

      return 0;
}

请问这一句是什么意思      char *b = (char *)&a;b是看作指针还是看作数组?
谢谢

召唤风云 发表于 2020-10-8 20:42:57

b是指针,将a的地址赋值给b

Jacksturdy 发表于 2020-10-8 20:45:00

召唤风云 发表于 2020-10-8 20:42
b是指针,将a的地址赋值给b

那后面*b是什么值

昨非 发表于 2020-10-8 20:47:20

b是字符指针,指向a的地址,

sunrise085 发表于 2020-10-8 21:06:08

给你写了注释#include <stdio.h>

int main()
{
      int a = 0x1234;
      char *b = (char *)&a;//char类型的指针b,把a的地址赋值给指针b,即指针b指向a

      if (*b == 0x12)//若指针b指向的单元的值为0x12,*b是取指针b所指向的单元的值
      {
                printf("大端!\n");
      }
      else
      {
                printf("小端!\n");
      }

      return 0;
}

萌出血 发表于 2020-10-8 21:07:42

意思就是,指向地址的指针,也就是指针的指针

Jacksturdy 发表于 2020-10-9 07:58:18

sunrise085 发表于 2020-10-8 21:06
给你写了注释

谢谢。a的地址赋值给指针b,那么*b 不应该是0x1234吗。,后面34去哪里了?

sunrise085 发表于 2020-10-9 13:43:01

Jacksturdy 发表于 2020-10-9 07:58
谢谢。a的地址赋值给指针b,那么*b 不应该是0x1234吗。,后面34去哪里了?

类型不同
char类型的指针只读一个字节
页: [1]
查看完整版本: c语言求助