建设部网站建造师公示,嘉兴seo网站建设费用,干果坚果网站建设,太原网页制作公司存放变量的地址需要一种特殊类型的变量#xff0c;这种特殊的数据类型就是指针#xff08;Pointer#xff09;。 具有指针类型的变量#xff0c;称为指针变量#xff0c;它时专门用于存储变量的地址值和变量。 其定义形式如下#xff1a; 类型关键字 * 指针变量名#x…存放变量的地址需要一种特殊类型的变量这种特殊的数据类型就是指针Pointer。 具有指针类型的变量称为指针变量它时专门用于存储变量的地址值和变量。 其定义形式如下 类型关键字 * 指针变量名 其中类型关键字代表指针变量要指向的变量的数据类型即指针变量的基类型Base Type 例如int *pa 我们从后往前将该语句读为pa是一个指针变量它指向一个整形变量。 那么该如何定义两个具有相同类型的指针变量呢 注意要使用下面的语句来定义两个具有相同基类型的指针变量 int *pa,*pb;//定义了可以指向整形数据的指针变量pa和pb 而不可以使用 int *papb;//这是定义可以指向整形数据的指针变量pa和整形变量pb 并且指针变量的定义只是声明了指针变量的名字及其所能指向的数据类型并没有说明变量究竟指向了哪里。 例1使用指针变量在屏幕上显示变量的地址。 第二次运行发现pa、pb、pc的值发生了变化 这是因为指针未被初始化意味着指针变量的值是一个随机值我们无法预知它会指向哪里它很肯会乱指一气。
#include stdio.hint main(void)
{int a0,b1;char cA;int *pa,*pb;char *pc;printf(a is %d, a is %p, pa is %p\n,a,a,pa);printf(b is %d, b is %p, pb is %p\n,b,b,pb);printf(c is %c, c is %p, pc is %p\n,c,c,pc);} 为了避免忘记指针初始化给系统带来的潜在危险防止指针乱指一气习惯在定义指针变量的同时将其初始化为NULL在stdio.h中定义为零值的宏。于时修改程序如下
#include stdio.hint main(void)
{int a0,b1;char cA;int *paNULL,*pbNULL;char *pcNULL;printf(a is %d, a is %p, pa is %p\n,a,a,pa);printf(b is %d, b is %p, pb is %p\n,b,b,pb);printf(c is %c, c is %p, pc is %p\n,c,c,pc);} 为了使指针指向变量之前必须将其指向确定的内存单元。于是将上面的程序修改为
#include stdio.hint main(void)
{int a0,b1;char cA;int *pa,*pb;char *pc;paa;pbb;pcc;printf(a is %d, a is %p, pa is %p, pa is %d\n,a,a,pa,*pa);printf(b is %d, b is %p, pb is %p, pb is %d\n,b,b,pb,*pb);printf(c is %c, c is %p, pc is %p, pc is %c\n,c,c,pc,*pc);//最后一个打印的是指向地址的值printf(a is %d, a is %p, pa is %p, pa is %p\n,a,a,pa,pa);printf(b is %d, b is %p, pb is %p, pb is %p\n,b,b,pb,pb);printf(c is %c, c is %p, pc is %p, pc is %p\n,c,c,pc,pc);//最后一个打印的是指向的地址printf(%d\n,sizeof(pa));printf(%d\n,sizeof(pb));printf(%d\n,sizeof(pc));} 指向某变量的指针变量通常称为某变量的指针虽然指针变量中存放的是变量的地址值二者在数值上相等但在概念上变量的指针并不等同于变量的地址。变量的地址是一个常量不能对其进行赋值。而变量的指针是一个变量其值是改变的。 指针变量只能向同一基类型的变量否则将引起warning。
注意 1.可以在定义指针变量的同时对指针进行变量进行初始化。 例如int * pa a 这个变量声明语句中的星号 *只是一个指针类型说明符不是间接寻址运算符。所以该语句不能理解为将a的值赋给pa所指向的变量。
正确理解定义一个可以指向整型数据1的指针变量pa并用整型变量a的地址值对指针变量pa进行初始化从而使指针变量pa具体的指向了整型变量a。