指针2
指针与函数
●可以把指针作为函数参数传递,能在函数内部修改外部变量的值,实现双向传递数据的效果,比如void swap(int *a, int *b)函数,在函数内通过解引用交换*a和*b的值,就能改变传入的实参的值。
●函数也可以返回指针,但要注意返回的指针不能指向函数内的局部变量(因为函数执行完局部变量就销毁了,返回其指针会导致访问非法内存),一般返回动态分配内存的指针或者全局变量的指针等合法情况。
指针的算术运算
●指针加上或减去一个整数,实际移动的字节数取决于指针所指向的数据类型的字节长度,例如指向int类型(通常占4字节)的指针加1,地址值增加4字节;指向char类型(占1字节)的指针加1,地址值增加1字节。
●两个指针相减,结果是它们之间相隔元素的个数(前提是指向同一数组中的元素)。
指针的类型
●不同类型的指针不能随意混用,例如int *类型指针不能指向double类型的数据,编译器会发出警告或报错,必须进行类型转换(强制类型转换可能带来数据解释错误等风险,要谨慎使用)。
多级指针
●像int **pp;是二级指针,pp指向的是另一个指针变量(该指针变量再指向int类型数据),常用于处理指针数组等复杂的数据结构或者函数参数中传递指针的地址等情况。
●可以把指针作为函数参数传递,能在函数内部修改外部变量的值,实现双向传递数据的效果,比如void swap(int *a, int *b)函数,在函数内通过解引用交换*a和*b的值,就能改变传入的实参的值。
●函数也可以返回指针,但要注意返回的指针不能指向函数内的局部变量(因为函数执行完局部变量就销毁了,返回其指针会导致访问非法内存),一般返回动态分配内存的指针或者全局变量的指针等合法情况。
指针的算术运算
●指针加上或减去一个整数,实际移动的字节数取决于指针所指向的数据类型的字节长度,例如指向int类型(通常占4字节)的指针加1,地址值增加4字节;指向char类型(占1字节)的指针加1,地址值增加1字节。
●两个指针相减,结果是它们之间相隔元素的个数(前提是指向同一数组中的元素)。
指针的类型
●不同类型的指针不能随意混用,例如int *类型指针不能指向double类型的数据,编译器会发出警告或报错,必须进行类型转换(强制类型转换可能带来数据解释错误等风险,要谨慎使用)。
多级指针
●像int **pp;是二级指针,pp指向的是另一个指针变量(该指针变量再指向int类型数据),常用于处理指针数组等复杂的数据结构或者函数参数中传递指针的地址等情况。
全部评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享