06C语言基础

📅 2026/7/22 3:50:12
06C语言基础
指针变量和数组名的区别1.获取指针变量自己占用的内存大小和获取数组名占用的内存大小2.指针和数组做位移操作的不同点相同点: 1.指针存地址,数组名存数组首个元素在内存中的地址2.使用,-做指针位移时,不管是数组名还是指针名效果相同不同点: 1.sizeof,数组名时,sizeof获取的是数组整个占用内存字节数2.使用,-做指针位移时,真的指针可以[因为指针是变量],但是数组名不可以[数组一旦定义地址和长度就不能发生改变]字符指针定义格式:char* str1 字符;字符串定义格式char str2[] 字符;注意事项:使用字符指针接收键盘录入值时,会有很大的风险,建议使用字符数组来接收键盘录入值指针做运算1.指针做加减法运算[.-]格式: 指针名 数字 / 指针名 - 数字本质:指针向大单位内存()或向小单位内存(-)位移指定单元---[没有赋值,指针存储的地址没有发生改变]单元:根据指针存储的地址指向数据的数据类型占用字节数决定---如指针存储的地址指向一个int数据,那么这个指针做位移时,一个单元就是四字节(int类型占用的字节数)指针做,-运算格式: 指针名 数字 / 指针名 - 数字本质: 指针向大单位内存()或向小单位内存(-)位移指定单元---[赋值,指针存储的地址发生改变]单元:根据指针存储的地址指向数据的数据类型占用字节数决定---如指针存储的地址指向一个int数据,那么这个指针做位移时,一个单元就是四字节(int类型占用的字节数)指针做,--运算格式: 指针名 | 指针名-- | 指针名 | --指针名 ---注意运算符前后顺序本质: 指针向大单位内存()或小单位(--)位移一个单元-[赋值,指针存储的地址发生改变]单元:根据指针存储的地址指向数据的数据类型占用字节数决定---如指针存储的地址指向一个int数据,那么这个指针做位移时,一个单元就是四字节(int类型占用的字节数)指针做比较运算----不要求指针指向的数据类型一致,但是会报错格式: 指针名1 关系运算符 指针名2本质: 指针之间可以进行比较运算,如,,,,,但比较的是各自指向内存地址的大小,返回值是int类型整数(true)1或(flase)0同类型指针做减法---必须要求两个指针指向地址中存储的数据类型一致格式 :指针名1 - 指针名2本质; 指针相减的结果表指针之间元素的个数---两个指针分别指向的地址差几个单元本质: 根据指针存储的地址指向的数据类型占用字节数决定---指针存储的地址指向一个int数据,那指针作位移时,一个单元就是四字节(int类型占用的字节数)指针数组和数组指针指针数组:数组中元素的数据类型是指针类型的数组---是数组不是指针,但数组中的元素都是指针类型格式:数据类型* 数组名[长度] (指针名1,指针名2,....n);数组指针:指向数组整体的指针---是指针但是指针代表数组整体定义格式:数据类型 (*指针名)[长度] 数组名;指针函数:函数返回值是一个指针---返回值是一个地址定义格式:返回值类型* 函数名(形参列表){函数体;return 返回值(指针/地址);}注意:不要在函数内返回一个局部成员的地址,因为会随着程序的结束而结束,导致错误,可以添加为static静态来解决指针类型做为函数的形参1.指针接收数组地址:但是在函数内没有把这个地址当做数组看待,所以会导致计算数组元素个数的时候出现错误---解决办法当知道函数的指针形参要接收数组地址时,需单独多一个形参来作为数组的长度数据传递2.利用指针形参做数据返回---指针操作在地址,可以利用地址来修改值