免费企业网站建设条件,当下网站建设,企业网站做多大,京东网站开发需求一说到指针#xff0c;不少同学就会觉得云里雾里。首先要明白#xff0c;指针和地址是一个概念#xff1b;然后明白指针和指针变量的区别。先理解地址和数据#xff0c;想象内存里面是一个个的小盒子#xff0c;每个盒子对应一个编号#xff0c;这个编号就是地址#xf…一说到指针不少同学就会觉得云里雾里。首先要明白指针和地址是一个概念然后明白指针和指针变量的区别。先理解地址和数据想象内存里面是一个个的小盒子每个盒子对应一个编号这个编号就是地址盒子里存放的就是数据。是取地址运算符如有 int a; 即有一个小盒子里面存放的数据起名叫aa就是取a的地址即该盒子的编号。*(地址)是取值运算符这里*是解引用操作符可以理解成打开对应地址编号的盒子取出里面的数据。*(a) 就是打开a对应的小盒子取出里面的数据即*(a)和a等价。我们定义一个指针变量int *p; p是指针变量专门用来存放地址。int *pa相当于int *p; pa;p存放的是a的地址*p也等价于 a。指针变量p既然是变量也同变量a一样对应一个小盒子也有一个地址编号p就是取指针p的地址。这样就好理解二级指针了。*p和**p的区别int *p 一级指针表示p所指向的地址里面存放的是一个int类型的值int **p 二级指针表示p所指向的地址里面存放的是一个指向int类型的指针即p指向的地址里面存放的是一个指向int的一级指针例inta5;//定义整形变量
int*pa;//定义一个指针指向这个变量
int**p1p;//定义一个二级指针指向p指针
/* 那么取出5的方式都有哪些呢 */printf(a%d,a);printf(a%d,*p);printf(a%d,**p1);以上3行输出的值都是5 。回过来看标题问题*p和*p根据运算优先级*p 等价于*(p)。*p 等价于(*p)。1、如果p是int *指针变量那么*p p*p p都是p但还没定义p指向哪存的是谁的地址。2、如果p是一个int变量那么*p p而*p是非法的因为*p非法。比如int p 10那么*p *(p) p 10即从p的地址取值而*p (*p) 则非法因为p10*10是取内存地址为10的值这在c语言中是不合法的。