深入理解C语言指针类型
C语言指针类型
这部分内容其实很简单,本来不想写的,但是一开始我还真没理解指针类型,所以后来想想还是写一个吧!得了废话少说直接上代码
#include <stdio.h>
#include <malloc.h>int main()
{unsigned char ff = 4; unsigned char ee = 3;unsigned char dd = 2;unsigned char cc = 1;int* p = (int *)&cc; //定义一个int类型指针,指向cc变量地址printf("cc = %p\ndd = %p\nee = %p\nff = %p\n\np = %p\n\n",&cc,&dd,&ee,&ff,p);//打印地址:cc = 0xbfb1664c 注意这个地址可能每次运行都是变化的,因为它是局部变量,所以每次都是变化的// dd = 0xbfb1664d // ee = 0xbfb1664e// ff = 0xbfb1664f//// p = 0xbfb1664c////显然是他们地址都是挨着呢! cc变量的地址是首地址,而且前面定义的p指针也指向ccprintf("cc = %d\n", cc); //cc = 1printf("dd = %d\n", dd); //dd = 2printf("ee = %d\n", ee); //ee = 3printf("ff = %d\n\n", ff); //ff = 4printf("*p = 0x%.8x\n\n",*p);//打印输出*p = 0x04040201;*p = 3;printf("cc = %d\n", cc); //cc = 3printf("dd = %d\n", dd); //dd = 0printf("ee = %d\n", ee); //ee = 0printf("ff = %d\n\n", ff); //ff = 0printf("*p = 0x%.8x\n\n",*p);//*p = 0x0000003*p = 300;printf("cc = %x\n", cc); //cc = 2cprintf("dd = %x\n", dd); //dd = 1printf("ee = %x\n", ee); //ee = 0printf("ff = %x\n", ff); //ff = 0printf("*p = 0x%.8x\n\n",*p);//*p = 0x0000012c //这里0x012c十进制就等于 = 300return 0;
}
看下终端输出:
上面程序里面注释已经写得非常清楚了,所以不讲了
总结:指针类型其实就是按照内存地址取几个字节,char就取1个字节,short就取2个字节,int就取4个字节
但是这些类型又跟编译器、操作系统有关系
参考资料是“狄泰软件C语言进阶教程”
深入理解C语言指针类型相关推荐
- C语言指针类型 强制转换
关于C语言指针类型 强制转换 引用一篇文章: C语言中,任何一个变量都必须占有一个地址,而这个地址空间内的0-1代码就是这个变量的值.不同的数据类型占有的空间大小不一,但是他们都必须有个地址,而这个 ...
- 深入理解C语言指针的奥秘-4
深入理解C语言指针的奥秘-4 http://www.gooogleman.com/forum.php?mod=viewthread&tid=18722&fromuid=1290 转载于 ...
- 最热网友收藏:深入理解C语言指针的奥秘((2007年第3周)
2007年第3周最热网友收藏 深入理解C语言指针的奥秘(93),共121人收藏,yanglilibaobao首先收藏 我来做个好人吧,40种网站设计常用技巧(78),共440人收藏,wuzeng200 ...
- C语言指针类型和所指数据的类型要一致吗
C语言指针类型和所指数据的类型必须要一致吗 网上很多答案是:"必须,不一致会出现语法错误",但是 no try no know. 首先看下我的环境: 下面是代码: #include ...
- 深入理解C语言指针的奥秘(转)
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址. 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的 类型,指针的值或者叫指针所指向的内存区,还有指针本身所占 ...
- C语言指针类型的意义
▶️文章目录 ✅1.指针的概念 ✅2.指针和指针类型 ✅3.野指针 ✅3.1野指针成因 ✅3.2如何规避野指针 1.指针的概念 指针就是地址,口语中说的指针通常指的是指针变量 指针理解的2个要点: 1 ...
- C语言 指针 类型的用法大汇总(指针/引用/取值) *与
今天刚好看汇编需要,就学了学. 本篇文章会不断完善,有疑问,请在评论区留言 对星号 * 的总结 1.表示乘法,例如int a = 3, b = 5, c; c = a * b;,这是最容易理解的. 2 ...
- c语言的返回类型是指针变量吗,C语言-指针类型
改值场景示例 - 改变 n 的值 的函数 void change(int n) { n = 10; } int main() { int a = 20; - 这里只能把 变量a 的值传到 change ...
- c语言指针类型占多少字节,关于指针占多少个字节
开章明义,在32位系统中指针占四个字节: 说道这个问题,学过C语言的都知道,我们在定义一个指针的时候需要说明指针的类型,那么按道理来说,不同类型的指针大小应该不同啊,整形占四个字节,浮点占八个字节,其 ...
最新文章
- struts2 理解
- 死磕Java并发:深入分析volatile的实现原理
- 深入理解spark两种调度模式:FIFO,FAIR模式
- 排序算法_桶排序(箱排序)
- 最新版mac使用m1芯片,使用nvm安装低版本的node报错问题
- 0x84bb0001 sqlserver_sqlserver 2000 远程连接 服务器的解决方案
- java程序解析perl文件_如何从shell脚本执行perl文件
- 向量二次规划matlab,MATLAB中使用Opti Toolbox的混合整数二次规划
- feign.RetryableException: Read timed out executing POST http://......
- UE5热更新(Pak包的Cook,打包,加载,踩过的一些坑)
- 【转】Excel表格的35招必学秘技
- PS CC2018安装及破解方法
- 光猫DNS服务器未响应,有光纤猫了还要猫吗?
- layui下拉框联动查询效果
- CWNP宣布中国首位CWNE获得者——朱志立(Kevin Zhu)
- 详解UniSwap、无聊猿、PlatoFarm空投的逻辑
- 黑猫带你学UFS协议第1篇:全网最全UFS协议中文详讲,这份学习框架图,你值得拥有!!!(持续更新中...)
- 阿里X82Y的解决方案及接口
- sql数据库质疑恢复办法
- 【背包问题】基于禁忌搜索算法求解背包问题附Matlab代码