指针变量与指针变量的声明
理解指针的第一步是在机器级上观察指针表示的内容。大多数现代计算机都将内存分割为字节(byte),每个字节可以存储8位的信息。
1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 |
地址 | 内容 |
0 | 01110110 |
1 | 00110110 |
2 | 11110110 |
3 | 11101110 |
.... | ....... |
n-3 | 01110110 |
n-2 | 00010111 |
n-1 | 10010110 |
int i, j, a[20], b[30], *p, *q;C语言要求对每个指针变量只能指向一种特定类型(引用类型)的对象:
int *p; //points only to integers double * q; //points only to doubles char *r ; //points only to characters至于引用类型是什么类型则没有限制。
取地址运算符和间接寻址运算符
为使用指针,C语言提供了一对特殊设计的运算符,为了找到变量的地址,可以使用&(取地址)运算符。如果x变量,那么&x就是x在内存中的地址。为了获得对指针所指向对象的访问,可以使用*(间接寻址)运算符。如果p是指针,那么*p表示p当前指向的对象。
取地址运算符
声明指针变是为指针留出空间,但是并没有把它指向对象.
int * p ; //points nowhere in particular在使用前初始化p是至关重要的。一种初始化指针变量的方法是使用&运算符把某个变量的地址赋给它.
int i, *p; ... p = &i;
间接寻址运算符
一旦指针变量指向了对象,就是可以使用*运算符访向存储在对象中的内容。例如,如果p指向i,那么可以如下所示显示出i值:
printf("%d\n", *p);
指针作为返回值
当给定指向两个整数的指针时,下列函数返回指向两整数中较大数的指针:
int *max(int * a, int *b){ if(*a>*b) return a; else return b; }调用max函数时,用指向两个int类型变量的指针作为参数,并且把结果存储在一个指针变量中:
int *p, i, j; .......... p= max(&i,&j);====================================================== 转载请注明出处:http://blog.csdn.net/utimes/article/details/8538309
======================================================
作者:utimes 发表于2013-4-20 9:50:25 原文链接
阅读:48 评论:0 查看评论