您的位置:首页 > 编程语言 > C语言/C++

c语言学习笔记之指针

2015-12-12 11:23 405 查看
指针

内存中最小的存储单元:字节,每个字节在内存中都有一个编号,这编号就是指针

指针:内存地址

有了指针你就有了打开这块内存的钥匙,就可以操作这一块的内容了

指针变量:存放内存地址的变量

定义指针:指针所指的数据类型 * 指针变量名称

在定义变量的时候,*表示类型说明符,说明定义的这个变量指针变量

使用场景:

在被调函数中,通过形参改变主调函数实参的值

用于函数返回多个值

多级指针(了解)

指向指针的指针

指针为什么要分数据类型

变量的地址是变量所占存储空间的首地址

指针变量仅仅可以存储一个地址编号,如果没有类型,当通过指针就不知道要访问多少个字节的存储空间

指针区分类型是为了通过 指针访问他所指向的存储空间,能够正确访问

如果通过一个char类型的指针操作一个int的变量,如果值的二进制数据超过1字节(char占一个字节,int占4个字节),那么就造成数据错误

如果通过一个int 类型的指针操作一个char变量,那么你就会修改了你不该修改的内存,造成程序逻辑错误

指针与一维数组:

数组像一个指针

nums[1] == p[1]

nums+1 = p + 1

nums[1]的本质*(nums + 1)

指针 + 整数 ==== 指针的值 + sizeof(所指向的数据类型)*整数

数组不是指针

sizeof(array) != sizeof(pointer);当一个数组赋值给指针变量时候,那么数组中有些信息就丢失了,比如:数组的长度,这种现象指针信息遗失

指针的指向可以改变,数组的指向不能改变

array == &array

指针与二维数组(理解)

二维数组的名称为一维数组的地址指针

定义指针数组格式

数据类型 * 指针变量名称[指针个数]

*p == p[0]:没有人这么写

定义指向一维数组的指针

int (*ps)[3]

int nums[3][2]和int (*ps)[2]

ps == nums

nums 和 nums[0]

相同点:对应的地址是一样的

不同点:指针类型不同

nums + 1 = nums + sizeof(nums[0]

nums[0] + 1 = nums + sizeof(int)

sizeof(nums):二维数组所占用的存储空间字节数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  指针 c语言