C语言指针类型和所指数据的类型要一致吗
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语言指针类型和所指数据的类型要一致吗相关推荐
- C语言学习(三)数据-浮点类型
更多类型相关介绍:C语言学习(二)数据 各种整数类型对大多数软件开发项目而言够用了.然而,面向金融和数学的程序经常使用浮点数.C语言中的浮点类型有float.double和long double类型. ...
- Php的if自动转换类型,php输出数据字段类型自动转换函数
//配置api输出格式 function hst_restful_api_filter($datas){ $API_fields = array('id','uid','pid','orders',' ...
- C语言指针-从底层原理到花式技巧,用图文和代码帮你讲解透彻
一.前言 二.变量与指针的本质 三.指针的几个相关概念 四.指向不同数据类型的指针 五.总结 一.前言 如果问C语言中最重要.威力最大的概念是什么,答案必将是指针!威力大,意味着使用方便.高效,同时也 ...
- C语言指针:从底层原理到花式技巧,用图文和代码帮你讲解透彻
一.前言 二.变量与指针的本质 三.指针的几个相关概念 四.指向不同数据类型的指针 五.总结 一.前言 如果问C语言中最重要.威力最大的概念是什么,答案必将是指针!威力大,意味着使用方便.高效,同时也 ...
- C语言指针-从底层原理到花式技巧,图文和代码给你讲解透彻
作者 | 道哥 责编 | 张文 头图 | CSDN 下载自东方 IC 前言 如果问 C 语言中最重要.威力最大的概念是什么,答案必将是指针! 威力大,意味着使用方便.高效,同时也意味着语法复杂.容易 ...
- 从底层原理到花式技巧,用图文和代码讲透C语言指针
一.前言 如果问C语言中最重要.威力最大的概念是什么,答案必将是指针!威力大,意味着使用方便.高效,同时也意味着语法复杂.容易出错.指针用的好,可以极大的提高代码执行效率.节约系统资源:如果用的不好, ...
- C语言指针问题 又是一段“扯”
再论C语言指针.地址.赋值的问题,又是一通"扯" 按:在CSDN论坛上,有位坛友提到这个问题: ==================================== 先看一段 ...
- linux c 指针和内存分配内存,Linux C语言指针与内存学习笔记
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 环境准备 Ubuntu 操作系统.VIM 编辑器.GCC 编译器.GDB调试器. 初始指针 通过两个数的交换引入指针指针 ...
- HCIA-RS自用笔记(15)OSPF基础、OSPF核心工作流程、OSPF数据包类型、OSPF邻居建立条件及过程
OSPF(7/20,41min) 开放式最短路径优先(Open Shortest Path First)协议是IETF定义的一种基于链路状态的内部网关路由协议 Open指公有协议:Cost以带宽进行计 ...
最新文章
- List,Set,Collection,Collections比较
- 如何把不同尺寸ico格式图标_还在为图标设计犯难?这篇告诉你图标设计so easy!...
- Linux GCC用法
- [51nod]1229 序列求和 V2(数学+拉格朗日差值)
- 如何测试OData的filter功能
- php 注册自动登录,php – 创建第二个自动登录用户的登录页面
- Extjs中给同一个GridPanel中的事件添加参数的方法
- 关于An association from the tablea refers to an unmapped classB
- GeoServer地图开发解决方案(四):发布Web地图服务(WMS)篇
- 二叉树遍历的非递归算法
- 数学中有关c语言的知识点总结,七年级数学基本函数的基本知识点归纳
- 思科的FabricPath,三统理论中的其中一统貌似正在被完成。
- 金笛JDMAIL邮件服务器证券行业邮件归档解决方案
- UserWarning: Glyph 30005 (\N{CJK UNIFIED IDEOGRAPH-7535}) missing from current font解决方式方法
- 计算机选择题在线,计算机考试选择题
- 面经_OPPO研究院_数据科学研究员实习岗
- R3Live系列学习(五)R3Live源码阅读
- ARM发布 Cortex-M35P保护物联网智能连接
- [转帖]美国《工程索引》收录中国科技论文的最新规定
- 调LED大屏颜色方法