一堆指针来了——初识指针

在c语言中,指针这一部分贯穿整个语言,被称之为c的精华,也是最难完全懂的一部分,今天我们就来简单的介绍一下指针的皮毛。

在计算机中所有的数据都必须保存在内存中,不同类型的数据占用的字节数是不一样的,如:整型(int)占4个字节,字符型(char)占1个字节。为了能正确并且准确的访问这些数据,必须为每个字节编号,就像给每一户人家的门牌号一样,是唯一的,根据这些编号可以轻松快捷的找到某一个字节。在c语言中将内存的字节编号成为地址或者指针,地址从0开始,依次增加。对于32位系统,程序能够使用的内存为4GB

最小的地址为0x0000 0000,最大的地址为0xFFFF FFFF.

1.“ * ”

“ * ”在c语言中所在环境的不同,代表的意义也不同

  • 表示乘法
  • 表示定义一个指针变量
  • 获取指针指向的变量的数据,解引用
int main()
{
    int a=9,b=6;
    int c=a*b;          //此处表示乘法
    int *p=&a;          //此处定义一个指针变量p,指向a
    *p=100;             //此处解引用,*p等价于a,通过*p间接改变a的值
    return 0;
}

2.定义一个指针变量

定义一个指针变量和定义一个普通变量类似,只是在变量名前加“ * ”而已,但是它们的意义发生了较大改变,格式:类型名  *变量名;*表示这是一个指针变量。在指针的定义中*和变量名结合。

int main()
{
    int *p,a;        //p是整型指针变量,a是整型变量
    char b,*c;       //c是字符型指针变量,b是字符型变量
    int s=1;
    int *x;
    x=&s;            //等价于int *x=&s;
    return 0;
} 

在c语言中将地址形象化的成为指针,所以指针变量也叫地址变量,意思就是通过它可以找到以它为地址的内存单元,也是一种间接访问变量的方法,所谓简洁访问,如:将变量a的地址&a存放在指针变量p中,后面可通过p找到a的地址,从而访问变量a。

图解指针

总结:所谓指针就是内存的地址,指针变量就是保存了内存地址的变量,指针大小在32位平台是4个字节,64位平台是8个字节,使用指针变量要明确指针变量自身的值(存储的地址)和指针变量所指向的变量的值(解引用*p),在定义指针变量时,类型对于指针的作用:1.解析存储单元的大小;2.指针变量加1的能力

#include<stdio.h>
int main()
{
	int* ip;    //ip+1加4个字节,编译器编译成:ip=ip+sizeof(int)*1
	char* cp;   //cp+1加1个字节
	double* dp; //dp+1加8个字节
}

3.指针的简单应用

3.1值传递

注:函数被调用时会分配栈帧空间,调用结束栈帧销毁

3.2址传递

3.3指针+1

示例:int型指针+1,加4个字节,加1后指针指向下一整型元素的地址

注:其它类型指针+1与int型类似

最后附上关于指针的一个习题,欢迎大家评论区留言回答哦!

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值