C语言指针知识点-创新互联
目录
成都创新互联长期为超过千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为武安企业提供专业的成都网站建设、做网站,武安网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制开发。前言:
1.指针
1.1什么是指针
1.2指针的定义
1.3*号的作用
1.4指针的指向类型和数据类型的大小
1.5修改*p和p
1.6.空指针和野指针
1.7指针和一维数组
1.8指针的运算
2.二级指针
2.1什么是二级指针
2.2二级指针的数据类型和指向数据类型
3.数组指针的定义
3.1数组指针和指针数组
3.2数组指针的指向类型和数据类型
3.3指向类型和数据类型的大小
3.4改变数组指针的指向
3.5数组指针的运算
前言:指针,是C语言中的一个重要概念及其特点,也是掌握C语言比较困难的部分。指针也就是内存地址,指针变量是用来存放内存地址的变量,在同一CPU构架下,不同类型的指针变量所占用的存储单元长度是相同的,而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。有了指针以后,不仅可以对数据本身,也可以对存储数据的变量地址进行操作。
1.指针 1.1什么是指针内存是由很多字节组成的,字节很多,所以每个字节都有独属于字节的一个编号,这个编号就是指针。
1.2指针的定义例如a的地址时0x100,要把这个编号存起来,就要用到指针。int *p = &a; *是标识符,表示我定义了一个指针变量p,里面存放的是int类型的a的地址。所有实际数据类型,不管是整型、浮点型、字符型,还是其他的数据类型,对应指针的值的类型都是一样的,都是一个代表内存地址的长的十六进制数。不同数据类型的指针之间唯一的不同是,指针所指向的变量或常量的数据类型不同。
1.3*号的作用- 标识符,用在定义指针的时候,表示我定义了一个指针变量 int *p;
- 取值运算符,取了指针所指向的空间里面的内容。
- 乘号。
Int *p = &a;
p的数据类型是int *。
p指向的数据类型是int类型。
指针的数据类型大小在32os永远是4字节,64os是8字节,不会因为指向的数据类型而发生改变。Int * char * double* float *都是4个字节。
1.5修改*p和p可以通过改变*p,进而改变p所指向的空间里面的内容。
可以改变p的指向,让p指向a改变成p指向b。
1.6.空指针和野指针野指针,没有固定指向的指针。
野指针,并不知道指向的哪片空间,所以比较危险,一般不用。
怎样避免野指针?
在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯。让野指针指向NULL,然后需要使用指针的时候再给指针p定义指向。
1.7指针和一维数组Int arr[5] = {1,2,3,4,5};
arr是这片空间的名字,也是这片空间的首地址。&arr[0] = arr,arr[0]是int型的,&arr是int *型的,
可以定义一个int *p = &arr[0], arr = &arr[0], int *p = arr,这里可以说arr赋值给p,也可以说p
指向arr,不能说arr 等于P。
1.8指针的运算一维整型数组和指针
p-q:计算出来连续空间里面,p和q中间差了几个元素(减出来的字节数/sizeof(数据类型))。
p++:往地址增大的方向移动,移动了一个数据类型大小,p的指向已经发生了改变。
p+1:往地址增大的方向移动,移动了一个数据类型大小,p的指向没有改变。
p--:往地址减小的方向移动,移动了一个数据类型大小,p的指向已经发生了改变。
p-1:往地址减小的方向移动,移动了一个数据类型大小,p的指向没有改变。
2.二级指针 2.1什么是二级指针C语言不限制指针的级数,每增加一级指针,在定义指针变量时就得增加一个星号*
。p1 是一级指针,指向普通类型的数据,定义时有一个*
;p2 是二级指针,指向一级指针 p1,定义时有两个*
。
一级指针存放的是普通变量的地址,二级指针存放的是一级指针的地址。
2.2二级指针的数据类型和指向数据类型本身的数据类型:int ** 4个字节。
指向的数据类型:int * 4个字节。
3.数组指针的定义数组指针是指向数组整体的,int arr[5],他的数据类型是int [5]
数据类型 (*变量名)[一维数组的元素个数]
如果不加(),变量名先和[]去结合,变成数组,然后再和*去结合,变成指针,最终变成指针数组。
3.1数组指针和指针数组数组指针:他是一个指针,指向了一个数组 int (*p)[5]
指针数组:他是一个数组,里面存放的都是指针 int *p[5]
3.2数组指针的指向类型和数据类型指向类型:int ()[5]
数据类型:int (*)[5]
3.3指向类型和数据类型的大小对指针数组来说,首先它是一个数组,数组的元素都是指针,也就是说该数组存储的是指针,数组占多少个字节由数组本身决定;而对数组指针来说,首先它是一个指针,它指向一个数组,也就是说它是指向数组的指针,在 32 位系统下永远占 4 字节,至于它指向的数组占多少字节,这个不能够确定,要看具体情况。
3.4改变数组指针的指向3.5数组指针的运算p+1:往地址增大的方向移动一个数组类型,p的指向没有改变。
p-1:往地址减小的方向移动一个数组类型,p不改变。
p++:增大的方向移动一个数据类型,p的指向已经改变。
p--:减小的方向移动一格数据类型,p改变。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
标题名称:C语言指针知识点-创新互联
分享网址:http://azwzsj.com/article/dccidg.html