复习C语言第十五天

木香藤子 2017-08-11

第十五天 指针 1.当计算机运行一个程序时,所有的数据都是存放在存储器中。在存储器内都有唯一的内存单元编号,这些编号就是地址。把一个字节称为一个内存单元,在VC++6.0在中整型占4个单元,字符一个单元。根据内存单元编号或地址就可以找到所需要的内存单元,所以也把这个地址叫做指针。 2.指针也是一种数据对象,占用一定的存储空间,指针的存储空间存放的是数据对象的地址。 3.用一个变量来存放指针的变量称为指针变量,该变量存放着(一个指针变量的值就是)某个内存单元的地址或称为某内存单元的指针。 4.内存单元的地址即指针,存放的数据才是单元的内容。一个指针是一个地址,是一个常量,而指针变量可以被赋值是变量 定义指针的目的是为了通过指针去访问内存单元并对其数据进行处理。 5.向指针变量赋予数组或函数的首地址,使程序更精炼、高效。 6.“*”是指针变量的说明符,不是通常的乘号,不能省略。如: int *q; 7.指针变量的赋值只能赋予地址,决不能赋予任何其他数据。 如:int b; int *q=&b; int b; int *q;q=&b; 错误:int *q; q=189; int b; int *q; *q=&b; char c; int *q=&c; int *q="100"; 8.(1)空指针用NULL表示,*q=NULL; 如果是全局指针变量和局部静态指针变量在定义时未被初始化,系统自动赋空值。(2)数组名表示数组的首地址。 int b[N],*p; p=b; 或p=&b[0];(3)char *p; p="Hello";这里并不是把整个字符串放入指针变量,而是把存放该字符串的字符数组的首地址放入指针变量。 (4)int x;int *p=&x;int *q=p;把函数的入口地址赋值给指向函数的指针变量:int(*p) ();p=f;//f为函数名 9.直接访问 变量有两个属性,变量值和变量地址,采用直接访问的方式去直接使用变量名。 #include<stdio.h> void main() {int i=100;printf("%d",i);} 间接访问 先从其他内存空间获得要访问的内存地址,根据得到的地址访问目的地址。 #include<stdio.h> void main() {int i=0; int *p=NULL; i=10; printf("变量i的地址是:%p",&i); printf("变量i的值是:%d\n",i); p=&i; printf("\n指针p的值是:%p",p); printf("\n指针p所指向内存单元的值是:%d\n",*p); } 10.#include<stdio.h> void main() {int i=5,x=10,*p; p=&i; printf("%d\n",*p); *p=x; //把变量x的值赋给*p printf("%d\n",*p); } 设有指针变量q: q:指针变量,它的内容是地址值 *q:指针的目标变量,它的内容是目标变量的值 &q:指针变量的地址 j=*p+5;//表示把i的内容加5并赋给j j=++*p;//p的内容加1后赋给j j=*p++;//相当于j=*p;p++ int i,*p=&i; &(*p)=&i=p; *(&i)=*p=i; “*”运算符与“&”运算符互为逆运算

查看更多主题的豆瓣日记和相册

木香藤子
作者木香藤子
46日记 0相册

全部回应 0 条

添加回应

木香藤子的热门日记

值得一读

    豆瓣
    我们的精神角落
    免费下载 iOS / Android 版客户端
    App 内打开