标签:
黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
六 指针与函数
01 指针作为函数参数
指针作为实参时,与普通变量一样,也是采用单向的值传递方式,即将指针变量的值(该值是一个地址)传递给被调函数的形参(必须也是一个指针变量)。由于形参接受实参传递的值是一个地址,这样两者就指向了同样的变量。
*如果想要C语言中得函数调用实现多个值的改变,可以设计一个形参是指针变量的被调函数,这样主调函数的实参指针与被调函数的形参指针相结合,根据形参指针与实参指针指向同一地址的原理,就可以通过改变该地址中得值,实现主调函数与被调函数之间的数据传递,从而使被调函数实际返回多个值到主调函数。
// 输入两个整数,用自定义函数实现这两个值的交换,并在主函数中输出交换后的结果. #include <stdio.h> void swap(int *x,int *y); //函数声明 int main() { int a,b; // 定义两个需要交换的整数 int *p1,*p2; // 定义两个指向int类型的指针 printf("请输入两个数:\n"); // 输入两个整数 scanf("%d%d",&a,&b); // 接受两个整数 printf("交换前a=%d,b=%d\n",a,b); // 输出交换前的整数 p1 = &a; // 使p1指向了x p2 = &b; // 使p2指向了y swap(p1,p2); // 调用函数交换a和b printf("交换以后:a=%d,b=%d\n",a,b); } void swap(int *x,int *y) { int temp; temp = *x; *x = *y; *y = temp; }
02 返回指针值的函数
一般形式:
数据类型 *函数名(形参列表)
{
函数体;
}
03 指向函数的指针变量
可以把函数的首地址赋予一个指针变量,使该指针变量指向该函数,然后通过指针变量即可找到并调用这个函数,把这种指向函数的指针变量叫做函数指针变量。
一般形式:
数据类型 (*指针变量名)(函数形参列表)
#include <stdio.h> int main() { int a = 4474; int *p = &a; // p = &a; *p = 2; printf("%d\n",*p); // 变量类型 变量名; // 格式:变量类型 *变量名; // 定义了一个指针变量p // 指针变量只能存储地址 // 指针就一个作用:能够根据一个地址值,访问对应的存储空间 // 指针变量p前面的int:指针变量p只能指向int类型的数据 return 0; }
12-黑马程序员------C 语言学习笔记--- C语言指针与函数
标签:
原文地址:http://www.cnblogs.com/iceshan/p/4492524.html