基本类型指针
# include <stdio.h>
int main(void)
{
int i=5;//系统分配了一个命名为i,内存大小为int型的大小,存放int类型的数字5的内存。内存地址值不知道,可以通过&i获得地址值。
int * p;//系统分配了一个命名为q,存放int类型数据的地址值的内存空间。int *是数据类型,可以理解为地址数据类型。
int * q;
//printf("%d\n",*p); //报错,*p是指:指针p中保存的数据是地址值,这个地址值所指向的那个内存中所保存的值。
//但是p没有赋值,所以它里面的保存的地址值是个垃圾值,可能那个地址值所指向的内存不是系统给你分配的内存,无法进行读写操作。
p=&i;//取出i的地址值赋值给p;这一步是不能少的。
printf("%d\n",*p);//输出p中保存地址值指向内存中保存的值:5
}
详细意思看注释;
下面在看一个简单的例子,互换a,b的值:
# include <stdio.h>
void hhuan(int *,int *);
int main(void)
{
int a=5;//系统分配了一个命名为i,内存大小为int型的大小,存放int类型的数字5的内存。内存地址值不知道,可以通过&i获得地址值。
int b=3;
//int * p;//系统分配了一个命名为q,存放int类型数据的地址值的内存空间。int *是数据类型,可以理解为地址数据类型。
//int * q;
//printf("%d\n",*p); //报错,*p是指:指针p中保存的数据是地址值,这个地址值所指向的那个内存。
//但是p没有赋值,所以它里面的保存的地址值是个垃圾值,可能那个地址值所指向的内存不是系统给你分配的内存,无法进行读写操作。
//p=&i;//取出i的地址值赋值给p;这一步是不能少的。
//printf("%d\n",*p);//输出p中保存地址值指向内存中保存的值:5
hhuan(&a,&b);
printf("%d, %d\n",a,b);
return 0;
}
void hhuan(int * i,int * j )
{
int t;
t=*i;
*i=*j;
*j=t;
}