指针的了解,解应用
指针
指针:指针是一种保存变量地址的变量,利用地址,通过地址能找到所需的变量,可以说,地址指向该变量。因此,将地址形象化的称为“指针”。(想要使用指针必须传指针和解引用)
#include<stdio.h>
int main()
{
char arr='A';
char *p;
p=&arr;
printf("0x%x\n", &p);
printf("0x%x\n", p);
printf("0x%x\n", &arr);
printf("%d\n", *p);
return 0;
}
结果如下:
指针的解引用
== 在功能函数中改变变量的值必须要传指针和解引用!!!==
正确的使用方法如下:
void Swap(int *i,int *j) //正确的解应用
{
int tmp;
tmp=*i;
*i=*j;
*j=tmp;
}
以下是错误的指针使用方法
1:没有传指针也没有解引用。
void Swap_err1(int i,int j) //
{
int tmp;
tmp=i;
i=j;
j=tmp;
}
2:传了指针,但是没有解引用。
void Swap_err2(int *i,int *j) //没有解引用就没有改变值
{
int *tmp=i;
i=j;
j=tmp;
3:野指针:野指针是指调用了不允许调用的地址,野指针是一种非法调用。
void Swap_err3(int *i,int *j)//
{
int *tmp;
*tmp=*i;
*i=*j;
*j=*tmp;
}
空指针
还有一种比较特殊的指针叫做空指针,空指针是一个特殊的指针变量,表示不指向任何东西。可以通过给一个指针赋一个零值来生成一个空指针。
代码及结果如下:
#include<stdio.h>
int main()
{
int *p = NULL;//NULL是空,零的意思
printf("p的地址为: %d\n",p);
return 0;
}
结果如下:
可以看到指针指向内存地址0,内存地址0有一个特别重要的意义,它表明该指针(空指针)不指向一个可访问的内存位置。