这里写目录标题
一、指针是什么?
1.指针是内存中一个最小单元(字节)的编导,也就是地址。
2.平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量。
3.int a=0;int* p=&a;
在 int* p 中,int 是指p所指向的 a 的类型是int 型;int*是p的类型。
(一)、指针变量
我们可以通过取地址操作符(&)取出变量的内存起始地址,把地址存放到一个变量中,这个变量就是指针变量。
总结:
指针变量是用来存放地址的变量,(存放在指针中的值都被当成地址处理)。
大小:
在32位的机器上,一个指针变量的大小是4个字节。
在64位的机器上,如果有64个地址线,那一个指针变量的大小是8个字节。
二、指针和指针类型
1.指针类型决定了:指针进行解引用操作的时候,访问几个字节(权限)。
如:
char* 的指针解引用访问1个字节
int* 的指针解引用访问4个字节
double* 的指针解引用访问8个字节
…
2.指针类型决定了指针的步长(向前/向后 走一步是多大的距离)
int* 指针+1,意思是跳过一个整形,也就是向后走4个字节
char* 指针+1,意思是跳过一个整形,也就是向后走1个字节
double* 指针+1,意思是跳过一个整形,也就是向后走8个字节
…
三、野指针
概念:野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)。
(一)、成因:
1.指针未初始化
#include<stdio.h>
int main()
{
int* p;//局部变量指针未初始化,默认值为随机值
*p = 20;
return 0;
}
2.指针越界访问
#include<stdio.h>
int main()
{
int arr[10] = {
0 };
int* p &#