关于c语言中的指针

1.什么是指针?

CPU中内存单元的编号==地址===指针

解引用操作符(  *  )的使用,首先需要创建一个指针变量,指针变量有许多种类型,int*,char*等,比如说,int a = 10; int* p = &a;此时,p就是一个整形类型的指针变量。p就是一个整形的指针,指向的是内存中存储a==10这个元素的地址,如果我们要访问这个元素,并且知道这里面存储了什么就需要解引用操作符即*p==10;这便是解引用操作符的使用规则。

指针变量的大小在不同的平台中是不一样的,32位平台中指针变量大小占4个字节,而在64位平台的环境中,指针变量的大小占8个字节。

指针类型的不同访问的字节也不同,int*能访问4个字节的地址,char*能访问1个字节的地址。

指针加减整数得到的结果和自身的指针变量类型有关,例如整形指针变量+1可以跳过四个字节去访问下一个整形变量。指针-指针结果是两个指针之间的元素个数。

void*类型的指针可以存放任意类型的指针变量,但是不能直接地解引用,有时候要使用强制类型转换。

用const来修饰指针变量:如果const在*左边(const*int q)此时,不能通过解引用q来修改q指向的值,而q本身的值可以被修改;如果const在*右边(*const int q)此时,不能修改q本身的值,但是可以通过解引用修改q指向位置的值。

野指针即未被初始化的指针,会是内存中随机的一个位置。野指针的初始化要用NULL。在写代码的过程中要避免野指针的出现和使用。有时候野指针也会造成越界访问。我们可以使用assert来判断指针是否为野指针。

2.数组指针

数组指针是指针,指向的是一个数组。

’ 数组的类型 ‘(* ’ 数组的名称 ‘)[ ' 数组的元素个数 '] = &’ 数组的名称 ‘ ;

3.函数指针

函数指针是指针,指向的是一个函数。

’ 函数的返回类型 ‘ ( * ’函数的名称 ‘ )( ' 实参 ‘ )

4.函数指针数组

函数指针数组存放的是指向函数地址的指针的数组。

int (* ’数组名‘ [ 元素个数 ] )(实参)= { ' 函数名 ’,‘ 函数名 ’};

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值