C语言参数和指针的作用的一个小技巧
程序员文章站
2024-03-07 16:46:39
...
C语言参数和指针的作用的一个小技巧
有的时候我们想用一个函数去改变几个值,最后进行下一步使用。但是一个功能函数不管处理
多少个数据,它只能返回一个结果。在我们需要获取改变的多个结果时,就可以通过传指针
来达到目的。
跨变量作用域操作数据,请对比以下两个函数
#include <stdio.h>
void swap1(int a,int b)
{
int temp;
temp=a;
a=b;
b=temp;
printf("值a:%d b:%d\n",a,b);
printf("地址:a=%p b=%p\n",&a,&b);//&a为提取变量a的地址
}
void swap2(int *a,int *b);
int main(void)
{
int a, b;//初始化两个变量
a=3;
b=5;
printf("数据操作前:a=%d b=%d\n",a,b);
swap1(a,b);//这里传过去的是值 传参的本质我认为是赋值 ,被调用函数赋值了一份两参数的值
//但是赋值的那一份的地址与主函数的实参地址不一样。
printf("swap1作用以后:a=%d b=%d\n",a,b);
printf("a的地址:%p b的地址:%p\n",&a,&b);
swap2(&a,&b);//这里传过去地址,虽然地址被复印了一份,但是地址一样。本质上它操作内存同一位置
printf("swap2作用以后:a=%d b=%d\n",a,b);
return 0;
}
void swap2(int *a,int *b)//注意* 号只有在声明的时候才代表指针,在除算数运算外位取地址的内容
{
int temp;
temp=*a; //所有此处*a==变量a地址中存的值 即a的值3;
*a=*b;
*b=temp;
}
还有一个摘自谭浩强书的一个基础知识测试
1.定义整型变量 p
2.定义指向整型数据的指针变量 p
3.定义整型数组p,它有5个整型元素
4.定义指针数组p,它由4个指向整型数据的指针元素构成
5.定义p为指向包含4个整型数据元素的一维数组的指针变量
6.p为返回整型数据的函数
7.p为返回指向整型数据指针的函数
8.p为指向函数的指针,该函数返回整型数据
9.p是一个指向 指向整数数据指针的指针变量
10.p是一个指针变量,基本类型为void类型,不指向具体对象
答案:
1.int p; 普通变量
2.int *p; 指针变量
3.int p[5]; 普通变量集合
4.int * p[4]; 指针变量集合 指针数组
5.int (p)[4]; 数组指针 即数组的地址
6.int p(); 普通函数 返回变量
7.int p(); 普通函数 返回指针
8.int (*p)(); 函数指针 函数的地址
9.int **p; 指向指针的指针 二级指针
10.void p; 无类型指针(可以强转成其他类型)如(int)p;
上一篇: asp.net iis 无法显示网页的解决方法分析
下一篇: C语言杂记——指针(一)