指针:用来存储变量地址的变量,它本身也是一个变量,只是里面的放的不是整数,不是浮点数,而是变量的内存地址,使用指针可以产生更高效、更紧凑的。ASCI用void*(指定void的指针)作为通用指针类型。
5.1 指针与地址
指针是指能够存入一个地址的一组存储单元,通常是2个或4个字节。
机器中一般都有一段连续编号或编址的存储单元,我们可以单独或连续的操作它们,比如,机器一般用一个字节来存储字符,用2或个4个字节来存储整型。
int *p:表明*p是一个int型变量,所以p为指向int变量的指针。
*p++与*(p++)是等价的,因为++与*是右结合的。
用*来直接寻址或间接引用指针变量。
5.2 指针与函数参数
因为函数是以传值的方式将参数传递给被调函数,所以真实被调函数里操作的是副本值。因为如果想对被传入的值进行改变,是需要将它们的地址传进去。swap(x,y)用来交换x,y的值,需要这样用swap(&x,&y)。
下面通过一个读取字符串转换成整形的函数说明指针在函数中的应用:
int getint(int *n) { int c; int sign; while(isspace(c=getch())) ; if(!isdigit(c) && c!='-' && c!='+') { ungetch(c); return 0; } sign=(c=='-')?-1:1; if(c=='+'||c=='-') c=getch(); for(*n=0;isdigit(c);c=getch()) { *n=*n*10+(c-'0'