C/C++指针基本数据类型指针

C/C++指针是个什么鬼?

带着这个问题我们开始, 为什么只有C/C++ (Objective-C 也有指针,也就是C语言的面向对象版本,

所以Objective-C 与c/c++完全通用,oc项目直接添加.c/.cpp文件,这TM扯远了,有机会还是专门写一篇来讲一下oc指针vs c++指针),其它语言c#/java 都没有这个niao东西,以至学习其它语言的同学

看到c/c++代码的指针时,那真TM是 “雪花飘飘,北风萧萧”,心里一万个cnm在奔腾!

指针的定义:

指针:百度告诉我的,我特么也不是特别明白,来看!

在信息工程中,指针是一个用来指示一个内存地址的计算机语言的变量或中央处理器(CPU)中的寄存器(Register)。

1.基本概念

指针一般指向一个函数或一个变量。在使用一个指针时,一个程序既可以直接使用这个指针所储存的内存地址,又可以使用这个地址里储存的函数的值。

在计算机语言中,由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。

有了这个概念呢,那么就理解一点点啦!

扫描二维码关注公众号,回复: 11847645 查看本文章

就是说指针这个东西啊, 实际呢,就是一个地址,就是开发编译器这些人想出来的这么一个东西,搞编译器的人肯定是NB的,方方面面都要考虑到,要搞泛化,要开放给开发者一个东西,或者标识而设计出来的这么一个东西!

说这么多就是总结一句话: 指针就是一个内存地址,是c/c++这种高级语言虚拟出来的一个东西,

实际低级语言(机器语言/汇编语言)tm和整数差不多就是一样,一个东西!

来看代码:

看代码之前呢,你要知道哈,c/c++呢 对变量或函数呢,以tm分声明与定义 ,这个要讲的话,又会扯远了,dan疼,写了一小时了,才

写出这么点毛毛来 ,惭愧!

看声明:

基本数据类型哈

int* pintval ; int* pintval =nullptr; //指向int类型变量的指针

double* pintval ; double* pintval =nullptr; //指向double类型变量的指针

char* pintval ; char* pintval =nullptr; //指向char类型变量的指针

以上是声明啊!

那能不能这样写呢

int* pintval=5;

double* pintval=8.8;

指针变量的初始化

存储类型 数据类型 *指针名=初始地址;

必须要是一个地址,这就和上面说的它就是一个地址对应起来了, 5,8.8还是一个常数,还没有开辟内存空间,所有没法用指针表示!

正确要这么写 int intval=5; int* pintval=&intval; 加&就表示地址,具体原因呢,我也不知道,我也不敢问啦!

int intval=5; 表示定义了这么一个变量, 既然是变量那么就要向操作系统申请内存啦,那么呢,申请了内存了是不是(得像我们人一样

弄个名字呢),而计算机呢都是以数字作名字, 操作系统 呢随机最一个位置0x40001234 ,让你呢把数据5呢放在这, 那这个时候呢

pintval 通过这句pintval=&intval,指向的就是这个0x40001234, 然后呢他的数据就是5,这样说可能表达不清,其实这个最好能调试让

你们看下反汇编 !

以上这句总结出来就是 pintval=0x40001234; *pintval =5;

*pintval 官方语法说是 “解引用”, 我tm不懂那么多,就叫取值!

不知道你理解了没有。。。 是不是真的难懂!

指针变量的赋值运算

指针名=地址

注意:“地址”中存放的数据类型与指针类型必须相符

  • 向指针变量赋的值必须是地址常量或变量,不能是普通整数,例如:

    • 通过地址运算“&”求得已定义的变量和对象的起始地址

    • 动态内存分配成功时返回的地址

那么我们定义一个指令要怎么赋值呢

int* pintval = new int(); //c++模式

int* pintval = new int; //c++模式

int* pintval = (int*)malloc( sizeof(int)); //c模式

以上呢就是为了分配内存空间,然后呢你就可以给值了, *pintval =5;

总结:1. 指针就是一个地址

2.指针的赋值呢(要么自己分配空间,要么呢用别人分配好的,然后你指向它),are you ok?

这一篇就讲到这里,下篇接着来,还有好多,数组指针,函数指令,二级指针,void指针,this指针等 都会讲!

反正就是要讲到你受不了!

猜你喜欢

转载自blog.csdn.net/kaizi318/article/details/108906261