C 语言指针总结
C 语言中的指针是一种特殊的变量,用于存放内存地址。通过对指针的理解和掌握,可以更好地学习 C 语言。
1. 变量的指针和指向变量的指针变量
指针变量是用来存放变量地址的变量。例如,int *pointer;这里的 pointer 就是一个指针变量,用来存放整型变量的地址。注意,* 号表示 pointer 是一个指针变量,不能写成 *pointer,*pointer 是 pointer 指向的变量。一个指针变量只能指向同一个类型的变量。
2. 指针变量的定义形式
指针变量的定义形式为:类型标识符 *标识符;例如:int *pointer;这里的 pointer 就是一个指针变量,用于存放整型变量的地址。
3. 指针变量的引用
指针变量的引用需要使用两个运算符:& 和 *。& 取地址运算符,例如 &a 就代表变量 a 的地址;* 指针运算符,例如 *a 就代表变量 a 的值。
4. 数组的指针和指向数组的指针变量
数组的指针指数组的起始地址,数组元素的指针指数组元素的地址。例如,int a[5];这里的 a 就是一个数组名,代表数组的首地址。可以通过指针变量来引用数组元素,例如:int *p; p = a; *(p+i) 就可以引用数组元素。
5. 指向多维数组的指针和指针变量
对于多维数组,指针变量可以指向多维数组的首地址。例如,int a[3][4];这里的 a 代表整个二维数组的首地址,也代表第 0 行的首地址,同时也是第 0 行第 0 列的元素的首地址。
6. 字符串的指针和指向字符串的指针变量
字符串可以用两种形式表示:数组和字符指针。例如,char string[] = "I love c!";char *str = "I love c!";实际上,字符指针变量 str 只存放字符串的首地址,不是整个字符串。
7. 字符串指针作函数参数
字符串指针实际上就是数组的首地址,可以作为函数参数传递。
8. 字符指针变量与字符数组的区别
字符指针变量和字符数组有以下几点区别:
* 字符数组由若干元素组成,每个元素存放一个字符,而字符指针变量只存放字符串的首地址,不是整个字符串。
* 对数组初始化要用 static,对指针变量不用。
* 对字符数组赋值,只能对各个元素赋值,不能象下面这样:char str[14];str="I love c!";
* 对指针变量可以,char *str;str="I love c!";注意:此时赋给 str 的不是字符,而是字符串首地址。
通过对指针的理解和掌握,可以更好地学习 C 语言,并且能够更好地编写程序。