【指针应用场景】
1.函数需要返回多个值,其中一些值可通过指针返回。传入的指针参数其实是需要保存带回结果的变量;
例程:
#include <stdio.h>
#include <stdlib.h>
void swap(int* a,int* b);
int main()
{
int a=5,b=6;
swap(&a,&b);
printf("a=%d b=%d",a,b);
return 0;
}
void swap(int* pa,int* pb)
{
int t=*a;//t为pa指向地址所存储的值,即5
*pa=*pb;//将pa指向地址所存储的值更新为pb指向地址所存储的值,即pa地址中现在存的是6
*pb=t;//将pb指向地址所存储的值更新为t的值,即5
}
2.需要传入较大的数据时用作参数;
3.传入数组后对数组做操作;
4.动态申请内存。
【指针常见错误】
1.定义指针时,没有让其指向任何地址,之后直接给该指针指向地址赋值,如:
int *a;//定义了一个指针变量,不知道指向哪里(可能指向一块写操作非法区域)。
*a=5;//此时写,可能会访问非法内存,段错误,程序异常终止。
int *a=0;//指向0地址,0地址是一个不能随便碰的地址。
*a=5;/