1.1.1 所谓指针,其实就是一个用来指示一个内存的地址的计算机语言的变量或中央处理器中的寄存器。指针一般出现比较近的计算机语言的语言,如汇编语言与C语言中。面向对象的语言如Java一般避免用指针。指针一般指向一个函数或一个变量。在使用一个指针时,一个程序既可以直接使用这个指针所存储的内存地址,又可以使用这个地址里的存储的变量或函数的值。
int i;
int*pi=&i;
char c;
char*pc=&c;
这里的&是取值运算符,&i表示取变量i的地址,int*pi=&i;表示定义一个指向int型的指针的变量pi,并用i的地址来初始化pi。
1.1.2 void*指针不能直接Derefrence,而必须先转化成别的类型的指针再坐Derefrence。void*指针常用于函数接口,比如:
1 void func(void*pv)
2 {
3 char*pchar=pv;
4 *pchar='A';
5 }
6
7 int main(void)
8 {
9 char c;
10 func(&c);
11 printf("%c\n",c)
12 ...
13 }
1.2 指针函数和返回值
#include<stdio.h>
int*swap(int*px,int*py)
{
int temp;
temp=*px;
*px=* py;
*py=temp;
return px;
}
main()
{
int i=10,j=20;
int*p=swap(&i,&j);
printf("now i=%dj=%d*p=%d\n",i,j,*p);
}