C语言中指针
一、指针的定义及大小
①指针是指地址(地址是常量);此处的地址指计算机存储设备中对于内存单元的编码(相当于门牌号);
②指针大小:4字节或8字节;32位平台是4字节;64位平台是8字节;
二、使用指针的目的
目的:通过指针去访问内存单元;目的是不看起来很简单?虽然目的很简单,但是请注意使用指针的方法(划重点哦);
三、指针变量
①定义:存放变量地址的变量(是不是看着很绕口?);
int main()
{
int x;//创建变量
int *p=&x;//此刻的p就是指针变量
//p是创建的变量,它的类型是int型指针,然后将变量x的地址赋值给p;
return 0;
}
②引用操作:
#include<stdio.h>
int main()
{
int x = 0;
int *p = &x;
*p = 10;// *p指解引用操作;通过p存储的地址找到x并且赋值10;
//以上就是指针的简单应用;
return 0;
}
四、指针类型
首先说明:指针类型决定了指针访问内存单元时的字节数;
①常用整型指针:
②常用浮点型指针:
③常用构造类型指针:
struct stu
{
char name[20];
int age;
};
int main()
{
int *arr[10];//指针数组
int (*arr)[10];//数组指针
struct stu *p;//结构体指针变量
return 0;
}
④函数指针:
定义:通过调用函数指针间接访问某函数;
函数类型 (*指针名字) (函数参数);
函数类型指原函数的类型、函数参数也是原函数参数;原函数无参数直接()如果有参则(int, int)
例如函数指针:void (*p)(int, int);
五、NULL指针
NULL指针定义:*#define NULL ( (void )0)
它作为一个特殊的指针变量,表示不指向任何东西。
使用:在你定义指针的时候不知道赋什么值,此时应该赋NULL。
六、指针相减
int main()
{
int a = 10, b = 6;
int *ptr = &a;
int *p = &b;
//p-ptr是p指针和ptr指针之间的元素个数,下图中p-ptr为5;
return 0;
}
七、二级指针
二级指针就是一级指针的指针;
#include <stdio.h>
int main()
{
int a = 10;
int *p = &a;
int **pp=&p;
//二级指针就是存储一级指针的地址,
//通过二级指针访问一级指针及它所指向的值;
printf("%d",**pp);//*pp获得一级指针的值
//再通过一个解引用找到一级指针所指向的值
return 0;
}
这是基础篇,下篇介绍进阶内容;
希望大家三连哦;