C语言指针类型
1:只要是指针类型,不管是几级指针【带几个*】,其宽度都是4字节
2:任何数据类型【包括自己定义的结构体】前面都能加*号,表示该数据类型的一个指针
3:由于是386处理器,其数据处理的宽度都是四个字节的,所以内存的对其方式都是以四个字节为单位对其的,只是在对具体数据进行操作的时候按照具体数据类型的长度来进行操作
4:指针类型的赋值必须是完整的赋值方式,不能简写,【赋值号两端的数据类型要完全一致,即*的数量要完全一致】
5:指针类型的数据只能做加或者是减运算,其在进行自加或者自减运算时,加的是该数据类型去掉一个*后的数据类型的宽度,但如果是加或者减一个数时,其实加的是该数与该变量的类型去掉一个*号后的长度的乘积的长度
void fun(){
char ch='a';
int x=3;
int y=4;
}
该函数的反汇编代码大致如下
PUST EBP
MOVE EBP,ESP
SUP ESP,4CH;
MOV ECX,19H //无参函数的堆栈缓冲区应该是40h,但是由于该函数有三参数,所以多了C,按照基本数据类型的长度来说,char的长度是1字节,int是4字节,其长应 MOVE ESI,ESP-4CH // 该是13字节【Dh】但是由于内存的对其方式,小于4字节的数据类型,其在申请内存时也是按照四字节来申请的,只是在对具体数据进 REP SOTS 行操作时是按照数 据类型的长度来处理的。【但这里对字符数组还有一点迷惑】
C语言指针类型的更多相关文章
- C语言指针类型 强制转换
关于C语言指针类型 强制转换 引用一篇文章: C语言中,任何一个变量都必须占有一个地址,而这个地址空间内的0-1代码就是这个变量的值.不同的数据类型占有的空间大小不一,但是他们都必须有个地址,而这个 ...
- 8. Go语言—指针类型
一.指针类型介绍 普通类型,变量存的就是值,也叫值类型. 获取变量的地址,用&,比如:var a int ,获取a的地址:&a 指针类型,变量存的是一个地址,这个地址存的才是值(指针存 ...
- C语言指针转换为intptr_t类型
1.前言 今天在看代码时,发现将之一个指针赋值给一个intptr_t类型的变量.由于之前没有见过intptr_t这样数据类型,凭感觉认为intptr_t是int类型的指针.感觉很奇怪,为何要将一个指针 ...
- Swift中对C语言接口缓存的使用以及数组、字符串转为指针类型的方法
由于Swift编程语言属于上层编程语言,而Swift中由于为了低层的高性能计算接口,所以往往需要C语言中的指针类型,由此,在Swift编程语言刚诞生的时候就有了UnsafePointer与Unsafe ...
- go语言的指针类型
一.指针与引用的相关概念 什么是指针? 指针,全称为指针变量,是用来存储内存地址的一种变量.程序中,一般通过指针来访问其指向的内存地址中的内容(数据). 什么是引用? 引用,是C++中提出来的一种新的 ...
- 对于C语言复杂指针类型的分析
转载自:http://www.slyar.com/blog/complicated-point-type.html int p; p是一个普通的整型变量. int *p; 1.p与*结合,说明p是一个 ...
- C语言指针的长度和类型
本文地址:http://www.cnblogs.com/archimedes/p/point-length-type.html,转载请注明源地址. 如果考虑应用程序的兼容性和可移植性,指针的长度就是一 ...
- C语言 数组类型与数组指针类型
//数组类型与数组指针类型 #include<stdio.h> #include<stdlib.h> #include<string.h> void main(){ ...
- C语言 详解多级指针与指针类型的关系
//V推论①:指针变量的步长只与‘指针变量的值’的类型有关(指针的值的类型 == 指针指向数据的类型) //指针类型跟指针的值有关,指针是占据4个字节大小的内存空间,但是指针的类型却是各不相同的 // ...
随机推荐
- 正则获取HTML代码中img的src地址
/// <summary> /// 获得HTML中所有图片的src地址 /// </summary> /// <param name="sHtmlText&qu ...
- 【平面设计AFTER】读到的设计海报分层法
来源参考:http://www.uisdc.com/graphic-designer-self-improvement 分层法的三层:“背景层”,“图形层”,“信息层” 1,背景层,一般为纯色,场景, ...
- Androidstudio安装AVD出现no system images installed for this target解决方案
解决方案:
- How To Set Up an OpenVPN Server on Ubuntu 14.04
Prerequisites The only prerequisite is having a Ubuntu 14.04 Droplet established and running. You wi ...
- PRINCE2第二个原则
PRINCE2要求项目团队吸取以前的经验教训,在项目生命周期中发现.记录和应对.吸取经验教训,应该记录在整个生命周期中,项目准备期应该回顾以往类似项目,看看是否有经验教训可以应用,如果项目是第一次做, ...
- FragmentPagerAdapter+ViewPager+Fragment
FragmentPagerAdapter中会在滑动到2页时,会预加载第三个页面.如果在这些页面中都有网络请求,那么当你还没有看到第三页时,第三页的数据请求已经发出.这样就会造成,当已进入该页面,可能会 ...
- php判断中文,英文, 数字
exeg Warning This function was DEPRECATED in PHP 5.3.0, and REMOVED in PHP 7.0.0. function checkStr ...
- Spring IoC容器的初始化过程
Spring IoC容器的初始化包括 BeanDefinition的Resource定位.载入和注册 这三个基本的过程.IoC容器的初始化过程不包含Bean依赖注入的实现.Bean依赖的注入一般会发生 ...
- iOS - YYAdd对UIDevice的拓展
YYKit中对UIDevice的拓展,accumulate knowledge !!! 首先 #include <sys/socket.h> #include <sys/sysctl ...
- HDU 2204Eddy's爱好(容斥原理)
Eddy's爱好 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Sta ...