指针是存放变量的地址,那为什么要区分类型?不能所有类型的变量都用一个类型吗?下面用一个例子来说明这个问题。

#include<stdio.h>

int main()
{
int a=0x1234;
int *p=&a;
char *c=&a;
printf("p指向的变量a的地址=%p\n",p);//打印指针p指向的变量的16进制的地址
printf("c指向的变量a的地址=%p\n",c);//打印指针c指向的变量的16进制的地址
printf("p指向的变量a=%x\n",*p);//打印指针p指向的变量值,用16进制表示
printf("c指向的变量a=%x\n",*c);//打印指针c指向的变量值,用16进制表示
return 0;
}

输出结果:

p指向的变量a的地址=000000000061FE0C
c指向的变量a的地址=000000000061FE0C
p指向的变量a=1234
c指向的变量a=34
可以看大,两个不同类型的指针变量p和c指向同一个变量a的地址后,打印地址时输出的都是一样的地址,但是在打印变量值的时候出现了问题,通过指针

p打印变量a的值,输出的是16进制数1234,但是通过指针c打印变量a的值确是34;这是因为c是一个字符型指针变量,它指向的值只能是一个字符型变量,占1个字节,占8位,所以只能访问到a的低8位,也就是34,而p是一个整型指针变量,它指向的是一个整型变量,整型变量占4个字节,也就是32位,所以它可以访问到a的32位,自然低16位也能访问。

最新文章

  1. 微信后台开发第一步:nodeJS+express接入微信后台详细教程
  2. Ruby Gem命令详解
  3. Hdu 1009 FatMouse&#39; Trade
  4. 前端js 判断输入的必须是数字,判断金钱
  5. 搭建高性能计算环境(六)、应用软件的安装之lammps
  6. ArrayList实现根据某属性大小相间排序
  7. JAVA之旅(二)——if,switch,for,while,do while,语句嵌套,流程控制break , continue ,函数,重载的示例总结
  8. Java IO--字符流--InputStreamReader 和 OutputStreamWriter
  9. php SESSION入库的实现
  10. 移动端适配单位rem
  11. angular应用容器化部署
  12. adduser与useradd的区别
  13. C语言之冒泡排序、选择排序、折半查询、进制查表
  14. linux系统编译安装软件的通用步骤
  15. _event_active_team
  16. 使用Managed Extensibility Framework方便的扩展应用程序
  17. 从模板驱动文件ins生成cls文件
  18. command symbol &amp; mac &amp; emoji
  19. Restful&amp;RestSharp
  20. 当array_filter函数的callback留空时 他会过滤掉所有键值为false的键

热门文章

  1. 第七十八篇:写一个按需展示的文本框和按钮(使用ref)
  2. python超多常用知识记录
  3. K8S_三种Port区别总结
  4. 操作系统学习笔记10 | I/O、显示器与键盘
  5. Java 多线程:线程池
  6. 题解 P2471 【[SCOI2007]降雨量】
  7. Mysqldump 的 的 6 大使用场景的导出命令
  8. Elasticsearch:Elasticsearch HQ 介绍
  9. Beats:运用 Filebeat 来对微服务 API 进行分析
  10. CentOS 7.x 升级OpenSSH