/*
指针 : 专于保存地址的数据结构,占用8个字节,并且可以通过指针保存的地址访问指针指向的内存空间的值;
定义格式 : 指针所指向的数据类型 *指针名称;
初始化 ; 1,定义的同时初始化,如 : int *[n]numP = # //定义几级指针,则写几个"*";
2,定义后,再初始化,如 : int *[n]numP; numP = #
//注 : 变量名称往往决定了从内存哪里开始取值;数据类型决定了从内存取值时,决定要取多少个字节的值,
当然取出来的只是二进制而已;而占位符则决定了将取出来的二进制转换成怎样的形式进行输出;
指向数组的指针 :
定义格式 : 数组数据类型 *指针名称;
//注 : 数组名称保存的即为数组的地址,即为数组中第一个元素的地址;因此,在对指向数组的指针初始化时,可直接将数组名称赋值给指针即可;
//注 : 指针可做加减运算,如某个指针加1,这里的1指的是单位1,也即指针所指向的数据类型占用的字节数;
案例 : 利用指针遍历字符串 :
char string[] = "acssd";
char *stringP = string;
while (*stringP != '\0')
{
printf("%c",*stringP);
stringP++;
}
printf("\n");
指针和字符串 :
保存字符串的两种方式 :
通过数组保存字符串,如 : char string[] = "adsdds"; //字符串保存位置: 栈中,生命周期 : 自创建起至return或"}";
通过指针保存字符串,如 : char *string = "assd"; //字符串保存位置 : 常量区中,生命周期 : 自创建起,始终存在,且在常量区中,值相同的变量指向同一块内存空间;
//应用场景 : 当需要频繁使用某一个常量时,可避免内存空间的频繁创建和释放,提升程序执行效率;
指针数组 : 就是保存有多个指针的数组
指针指向的数据类型 *数组名称[元素个数];
指向函数的指针 :
//注 : 函数也会占据一块内存空间,因此函数也会有自己的地址,保存在函数名中;
定义格式 : 函数返回值的数据类型 (*指针名称) (形参) //形参名称可省略不写;
通过指针调用函数 : 1,(*指针名称)(实参)
2,指针名称(实参)
应用场景 : 实现入口或类;
常可通过指针实现一个入口,根据用户需求不同,调用不同的函数以实现不同的动作或功能.由此,我们也可以理解"类"这一概念,如在python中的print函数,时间上print函数
仅仅只是一个打印入口而已,print函数会根据用户要求打印的内容不同,调用不同的打印函数,打印相应的内容,如打印整型数据和打印浮点型数据,调用的打印函数就不同;
*/
标题名称:C语言之指针
分享地址:
http://cdweb.net/article/josjps.html