什么是指针
* 指针变量:用来存储某种数据在内存中的地址.
* 世面上书籍通常把指针和指针变量的概念混在一块儿了.
市面上的书籍说的指针指的就是指针变量java
Ø *号的三种含义
1. 两个数相乘
int i =5;
int j = 5;
i*j;
2. 基本类型* 表示这种类型的指针变量
- 指向内存中这种类型的变量的地址
int i= 3;
int* p;能够存放i的地址
p=&i
3. 指针变量前加* 表取出这个指针变量里的数据
int* p;
*p 把地址里的数据取出来数据结构
指针常见错误
* 野指针:指针变量没有定义指向的地址,该指针就不能赋值(点我就蓝屏)
int* p;//声明一个指针变量用来存放一个地址
//指针变量未经赋值,不能够使用.
//*p 野指针.
printf("*p=%d\n",*p);
* 每种数据类型的地址,必须用当前类型的指针变量表示
double d = 3.14;
int *p ;//指针变量存储int类型数据的地址
//每种数据类型的地址,必须用当前数据类型的指针变量表示.
p = &d;
printf("*p=%lf\n",*p); 函数
Ø 值传递和引用传递
* 引用传递:若是传递的值是一个内存地址,经过这个地址能够找到地址对应的引用
* 值传递:传递具体的数值
* 在java语言中对象实际上存放在某个内存地址里面,传递对象就至关于传递的是内存地址(引用传递)spa
Ø 指针的应用场景
让函数返回一个以上的值
直接访问硬件 (opengl 显卡绘图)
快速传递数据(指针表示地址)
表示复杂的数据结构(结构体)
方便处理字符串
指针有助于理解面向对象指针
• 指针就是地址,地址就是指针对象
• 地址就是内存单元的编号blog
• 指针变量是存放地址的变量内存
• 指针和指针变量是两个不一样的概念字符串
• 可是要注意: 一般咱们叙述时会把指针变量简称为指针,实际它们含义并不同io
#include<stdio.h> #include<stdlib.h> main() { int i = 5; //写一个一级指针 int* p = &i; printf("p = %d \n",*p); //二级指针 int** pi = &p; printf("pi =%d \n",*(*pi)); printf("pi =%d \n",**pi); //三级指针 int*** pp = & pi; printf("pp = %d \n",***pp); }