C语言中用sizeof()测量指针变量结果却不同,如sizeof(*p)和sizeof(p)

1.如char *p="hello",*p所指的是内容,p所指的地址,

下面就用程序说明:

#include
int main()
{
  char *p="hello";
  printf("sizeof()所测数据*p:%d\n",sizeof(*p));
  printf("sizeof()所测数据p:%d\n",sizeof(p));
  return 0;
  }
  
运行结果:
sizeof()所测数据*p:1
sizeof()所测数据p:8

为什么会出现1和8呢?

这是因为p是指向地址,地址是为8位,所以,所测数据为8。

对字符指针变量p初始化,实际是把字符串第一个元素的地址(即存放字符串的字符数组的首元素地址)赋给指针变量p,使p指向字符串的第一个字符,由于字符串常量"hello"已由系统分配在内存连续的6个字节,因此,p就指向字符串第一个字符,所以,所测数据是1。

你可能感兴趣的:(c语言,c++,开发语言)