在程序运行过程中,数组的大小是不能改变的,这种数组称为静态数组(对于无法事先预估准确数据量的情况,这种数组无法做到既满足处理需要又不浪费内存空间)。在C语言中可利用内存的申请和释放库函数,以及指向数组的指针变量可当数组名使用的特点来实现动态数组,其本质是一个指向数组的指针变量。
定义:
float *p ; //p是指向单精度变量的指针变量,自己内部存放的是地址信息,地址信息内部存放的才是具体数据。
赋值:
float a=1.23;
float *p ;
p=&a; //p这个指针变量只能指向同为单精度的变量,且不允许被赋值为非地址类型的数据,&a是取变量a的地址
引用:
float a=1.23;
float b=0.0;
float *p ;
p=&a; //将变量a的地址数据赋值给指针变量p,指针变量p里的内容为变量a的地址数据
b=*p; //将指针变量p里存放的地址数据所指向的具体内容取出赋值给变量b
其他:
float *p1,a[5];
char *p2;
p1=a; //将数组变量a的首地址赋值给指针变量p1,p1=&a[0];也有同样效果
p2=”Hello,World!”; //将该字符串的首地址赋值给指针变量p2
注意:
如果直接对已经有地址数据的指针进行操作,则该地址对应的变量也会随之改变,例如:
float a=1.23;
float *p ;
p=&a;
printf("*p=%f,a=%f \r\n",*p,a); //结果为:*p=1.23,a=1.23
*p=4.56;
printf("*p=%f,a=%f \r\n",*p,a); //结果为:*p=4.56,a=4.56