type
status
date
slug
summary
tags
category
icon
password
1、指针入门
两值:自身的值,指向的值。
四方面:
1、指针的本质:地址
2、指针自身类型:
3、指针指向的类型:
4、指针的大小:所占内存空间数,4字节或8字节

2、const and point
const int *p;//*p为常量 p为变量
int const *p;//*p为常量 p为变量
int* const p;//p为常量 *p为变量
const int* const p;//*p和p都为常量
3、隔山打牛
实现了一个简单的加法功能,并将结果通过指针传递回来。
出参的运用
4、一道大厂指针笔试题
5、指针数组、数组指针
指针数组:保存指针的数组
数组指针:保存数组的指针
三值合一:
&arr[0]首元素地址
arr数组名
&arr数组地址
&arr[0]和&arr区别
6、指针函数、函数指针
函数指针:指向函数的指针
案例代码:
指针函数:返回指针的函数
案例代码
7、注意细节
1、指针减指针是元素的个数
2、指针之间没有加法操作
3、指针被强转之后不能相减(二义性)
4、函数指针不能+1
8、复杂指针解析
1、如何定义一个函数的返回值为指向函数的指针
2、相关复杂指针
9、泛型指针
9.1 void*概述
上善若水
可以指向任何类型,所以为泛型指针
物归原主
如果要使用void*指针,需要重新强转为具体类型,方可使用,不可直接对void*进行使用
9.2 void*的应用-memcpy()
memcpy
是 C/C++ 中用于按字节复制指定长度内存数据的函数,不检查内存重叠,需保证目标空间足够
内存重叠问题:
mem_cpy(str+2,str,4);
此时会发生内存重叠,如果没有处理内存重叠,则得到的目标字符串是“abababghijk”,和预想差异过大。

如何来判断内存是否重叠?以及如何处理呢?
首先模拟出所有情况,发现只有这六种情况,当且仅当发生第二种,也就是pDest<(pSrc+count)会发生内存重叠。
解决办法,先将目标和源都进行后移,然后逆着进行拷贝,这样就不会发生内存重叠了。

9.3 void*的应用-快速排序
- Author:Blinky
- URL:http://preview.tangly1024.com/article/cprogrammingpoint
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!