c之精髓——指针(pointer)——用来存储地址的变量。一般来讲,指针是一个其数值为地址的变量(或更一般地说是一个数据对象)。
一元运算符&可以取得变量的存储地址,一个变量的地址可以被看作是该变量在内存中的位置。
地址运算符&:后跟一个变量名时,&给出该变量的地址。
间接运算符*:当后跟一个指针名或地址时,*给出存储在被指向地址中的数值。
指针声明,举例如下:
int * pi; char * pc; // pc所指向的值(*pc)是char类型的,而pc本身又是什么类型?我们把它描述为“指向char的指针”类型。指针是一种新的数据类型 float * pf, * pg;
类型标识符表明了被指向变量的类型,而星号(*)表示该变量为一指针。声明int * pi;的意思是pi是一个指针,而且*pi是int类型的。
数组名同时也是该数组首元素的地址。也就是说,如果flizhy是一个数组,那么flizhy == &flizhy[0]; flizhy和&flizhy[0]都代表首元素的内存地址。
数组和指针之间的密切关系:可以用指针标识数组的每个元素,并得到每个元素的数值。从本质上来说,对同一个对象有两种不同的符号表示方法。c语言标准在描述数组时,确实借助了指针的概念。例如:定义ar[n]时,意思是*(ar + n),即“寻址到内存中的ar,然后移动n个单位,再取出数值”。
在函数原型或函数定义头的场合中(并且也只有在这两种场合中),可以用int * ar代替int ar[]
int sum(int * ar, int n); int sum(int ar[], int n);
c提供了8种基本的指针操作:(了解就好)
原文:http://www.cnblogs.com/yerenyuan/p/5062961.html