指针是c语言的难点和重点,灵活熟练的掌握了指针才能体会c语言的精华所在。
首先什么是指针,这个对于初学者和不太熟练的人来说是个十分头疼的问题。有的人说指针就是地址,又有的人反对。我觉得初学者不要过分的深究这个概念,要实际的拿出代码来分析。这样才能帮助我们更好的理解什么是指针。
指针定义是
首先我们要搞懂c语言中变量存取的方式。 在c语言中有2种方式:直接存取、和间接存取。
int a=8;
int b=a; //(直接) 通过变量名来获取变量的值。
(间接) 通过值的地址来获连续取存储单元。
直接最大作用:通过地址来修改或者存取各种值,不用变量,从而更加灵活高效
#include<stdio.h>
void main()
{
//定义一个指针变量,数据类型 *(指针标识符) 指针变量名
int*p=&a;
//这里p 打印出来的是就是a 的值 8.数组元素全为指针的数组称为
printf("%d",p);}
指针变量的值是内存单元地址,是常量。变量可以存放指针,而p 称之为指针变量,指针变量只能存地址。
指针数组和数组指针
数组元素全为指针的数组称为指针数组。
int * p[6] 符号[]优先级高于* ,p[6]为一个数组,外面是指针标识符。于是就等于定义了6个指针。
指向数组的指针称之为数组指针。
int (*p)[6] 因为加了括号 p 就是个指针,指向了6个int型的数组。
指针函数 函数指针
指针函数
char * f(char,char)
返回值是指针类型的。
函数指针
char (*f)(char,char)
指针可以指向整型变量、字符串、数组,同理指向函数的是指针变量
二级指针
指向指针的指针
int **p;
一级指针保存的是数据的地址。二级指针保存的是指针。