C语言指针类型和所指数据的类型必须要一致吗

网上很多答案是:”必须,不一致会出现语法错误“,但是 no try no know。

首先看下我的环境:

下面是代码:

#include <stdio.h>int main ()
{double var_double = 10.0;double *p = &var_double;//double数据类型的指针int *y = &var_double;//int数据类型的指针printf("p指向var_double 变量的地址: %p\n", p);printf("y指向var_double 变量的地址: %p\n", y);int var_int = 10;p = &var_int;y = &var_int;printf("p指向var_int变量的地址: %p\n", p);printf("y指向var_int变量的地址: %p\n", y);p++;y++;printf("p++ 后的地址: %p\n", p);printf("y++ 后的地址: %p\n", y);return 0;
}

1.定义一个double类型的变量,然后分别将double类型的指针和int类型的指针指向这个变量;
2.定义一个int类型的变量,然后分别将double类型的指针和int类型的指针指向这个变量;

最终编译是否能通过呢


可以看到,可以编译通过并执行,只不过报了两个警告(有的小伙伴说的语法错误,可能跟环境有关,这个不是重点)。重点是 double类型和int类型所指向变量var_int的地址最初是一样的,但是执行了自加操作后地址就不一样了,差了四个字节,这是为什么呢?

指针有两个语义:一是内存的基地址,二是指向数据的类型,也就是指向单位的大小是多少(void*除外)。

我的系统是x86_64位的,所以double占8个字节,int占4个字节,所以double类型自加就是以8字节为单位相加,int是以4字节为单位相加。

总结
指针类型和所指数据的类型一般要一致的,除非不需要操作指针。

以上就是本文的所有内容了,由于本人是C语言小白,文中如有错误,还请大佬们纠正指出。

C语言指针类型和所指数据的类型要一致吗相关推荐

  1. C语言学习(三)数据-浮点类型

    更多类型相关介绍:C语言学习(二)数据 各种整数类型对大多数软件开发项目而言够用了.然而,面向金融和数学的程序经常使用浮点数.C语言中的浮点类型有float.double和long double类型. ...

  2. Php的if自动转换类型,php输出数据字段类型自动转换函数

    //配置api输出格式 function hst_restful_api_filter($datas){ $API_fields = array('id','uid','pid','orders',' ...

  3. C语言指针-从底层原理到花式技巧,用图文和代码帮你讲解透彻

    一.前言 二.变量与指针的本质 三.指针的几个相关概念 四.指向不同数据类型的指针 五.总结 一.前言 如果问C语言中最重要.威力最大的概念是什么,答案必将是指针!威力大,意味着使用方便.高效,同时也 ...

  4. C语言指针:从底层原理到花式技巧,用图文和代码帮你讲解透彻

    一.前言 二.变量与指针的本质 三.指针的几个相关概念 四.指向不同数据类型的指针 五.总结 一.前言 如果问C语言中最重要.威力最大的概念是什么,答案必将是指针!威力大,意味着使用方便.高效,同时也 ...

  5. C语言指针-从底层原理到花式技巧,图文和代码给你讲解透彻

    作者 | 道哥  责编 | 张文 头图 | CSDN 下载自东方 IC 前言 如果问 C 语言中最重要.威力最大的概念是什么,答案必将是指针! 威力大,意味着使用方便.高效,同时也意味着语法复杂.容易 ...

  6. 从底层原理到花式技巧,用图文和代码讲透C语言指针

    一.前言 如果问C语言中最重要.威力最大的概念是什么,答案必将是指针!威力大,意味着使用方便.高效,同时也意味着语法复杂.容易出错.指针用的好,可以极大的提高代码执行效率.节约系统资源:如果用的不好, ...

  7. C语言指针问题 又是一段“扯”

    再论C语言指针.地址.赋值的问题,又是一通"扯" 按:在CSDN论坛上,有位坛友提到这个问题: ====================================  先看一段 ...

  8. linux c 指针和内存分配内存,Linux C语言指针与内存学习笔记

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 环境准备 Ubuntu 操作系统.VIM 编辑器.GCC 编译器.GDB调试器. 初始指针 通过两个数的交换引入指针指针 ...

  9. HCIA-RS自用笔记(15)OSPF基础、OSPF核心工作流程、OSPF数据包类型、OSPF邻居建立条件及过程

    OSPF(7/20,41min) 开放式最短路径优先(Open Shortest Path First)协议是IETF定义的一种基于链路状态的内部网关路由协议 Open指公有协议:Cost以带宽进行计 ...

最新文章

  1. List,Set,Collection,Collections比较
  2. 如何把不同尺寸ico格式图标_还在为图标设计犯难?这篇告诉你图标设计so easy!...
  3. Linux GCC用法
  4. [51nod]1229 序列求和 V2(数学+拉格朗日差值)
  5. 如何测试OData的filter功能
  6. php 注册自动登录,php – 创建第二个自动登录用户的登录页面
  7. Extjs中给同一个GridPanel中的事件添加参数的方法
  8. 关于An association from the tablea refers to an unmapped classB
  9. GeoServer地图开发解决方案(四):发布Web地图服务(WMS)篇
  10. 二叉树遍历的非递归算法
  11. 数学中有关c语言的知识点总结,七年级数学基本函数的基本知识点归纳
  12. 思科的FabricPath,三统理论中的其中一统貌似正在被完成。
  13. 金笛JDMAIL邮件服务器证券行业邮件归档解决方案
  14. UserWarning: Glyph 30005 (\N{CJK UNIFIED IDEOGRAPH-7535}) missing from current font解决方式方法
  15. 计算机选择题在线,计算机考试选择题
  16. 面经_OPPO研究院_数据科学研究员实习岗
  17. R3Live系列学习(五)R3Live源码阅读
  18. ARM发布 Cortex-M35P保护物联网智能连接
  19. [转帖]美国《工程索引》收录中国科技论文的最新规定
  20. 调LED大屏颜色方法

热门文章

  1. 电脑关机后鼠标指示灯还亮着的解决
  2. 5G学习:5G总体架构
  3. 模板方法设计模式(TemplateMethod)
  4. 旅游市场复苏,旅行社小程序该怎么做?
  5. PHP CURL 与 java http
  6. 二叉树前序遍历-迭代
  7. 找回svn 账号密码
  8. python脚本练习题
  9. 三维天地荣登深交所创业板正式挂牌上市,迎信息化发展新局面
  10. 中国康复医院产业经营效益探析与运营态势调研报告2022版