指针是C语言中的一种数据类型。掌握指针型数据的使用,是深入理解C语言特性和掌握C语言编程技巧的重要环节,正确灵活的使用指针,可以有效第描述各种复杂的数据结构,能够动态的分配空间,能够方便地操作字符串,还可以自由地在函数之间传递各种类型的数据,是程序便捷、紧凑、执行效率高。
地址和指针
地址是C语言程序在编译过程中,被分配到的内容地址。在该内存地址的空间中存放着该变量。
指针是一个指向内存空间地址的一个“游标”一样的东西。
指针变量就是指存放某一个变量的地址的变量,它用来执行另一个变量。其值是一个指针。
指针的定义和使用
指针变量定义的一般形式为:
类型说明符 *变量名;
其中,*表示这个是一个指针变量,变量名即为定义的指针变量名,类型说明符表示该指针变量所指向的变量的数据类型。例如:
int *p; /*p是指向整型变量的指针变量*/
在使用指针变量时,首先需要对其进行赋值,使指针变量指向一个具体值。为指针变量赋值的方法有两种,使用赋值语句为指针变量赋初值和在定义指针变量的同时进行初始化。例如:
int a,*p;
p=&a; /*方式一:使用赋值语句为指针赋初值*/
int *p=&a /*方式二:定义指针变量的同时进行初始化*/
数组与指针
前面我们已经直达,通过数组下标可以确定数组元素在数组中的顺序和存储地址。由于每个数组元素相当于一个变量,因此指针变量可以指向数组中的元素,也就是说可以用指针方式访问数组中的元素。
对一个指向数组元素的指针变量的定义和赋值方法,与指针变量相同。例如:
int a[10]; /*定义a为包含10个整型数据的数组*/
int *p; /*定义p为指向整型变量的指针*/
p=&a; /*把a[0]元素的地址赋值给指针变量*/
C语言中归档,数组名代表数组的首地址,也就是0号元素的地址
字符串与指针
字符指针也可以指向一个字符串,可以用字符串常量对字符指针进行初始化:
char *str="This is a string!"
这是对字符指针进行初始化。此时,字符指针指向一个字符串常量的首地址。
还可以用字符数组来存放字符串。例如:
char string[]="This is a string"