黑马程序员——c语言基础:指针函数和函数指针

从键盘上输入一位整数,当输入1~7时,显示下面对应的英文星期名称的缩写。 从键盘上输入一位整数,当输入1~7时,显示下面对应的英文星期名称的缩写。 1:MON. 2:TUE. 3:WED. 4:THU 5:FRI. 6:SAT 7:SUN 输入其他数字时提示用户重新输入,输入数字0时程序结束。程序运行结果如图。 提示: 声明两个变量num和day,分别保存用户输入的数字和该数字对应的星期缩写。 循环条件:用户输入的数字非0 如果用户输入的数字合法,泽利用switch语句为day赋值;否则提示用户重新输入。 立即下载

1.指针函数

 指针函数:返回值是指针的函数。

 指针函数的定义:

    指针函数类型 *函数名(){

        return 地址;

    }


实例1:用指针函数输出两个数中大数的地址。

#include <stdio.h>


int *bigAdress(int *a, int *b){

    return *a > *b ? a : b;

}


int main(int argc, const char * argv[]) {

    // 定义并初始化两变量

    int a = 23;

    int b = 89;

    

    // 输出a,b的地址

    printf("&a = %p\n&b = %p\n",&a,&b);

    

    // 用指针函数找出大数的地址并输出

    printf("大数地址为:\n%p", bigAdress(&a,&b));

    return 0;

}


实例2:通过指针函数,输入一个1~7之间的整数,输出对应的星期名。

#include <stdio.h>


char *printDay(int n){

    // 定义一个字符串指针数组

    char *week[7] = {"星期一","星期二","星期三","星期四","星期五","星期六","星期日"};

    return n > 0 && n < 8 ? week[n - 1] : "输入错误!";

}

int main(int argc, const char * argv[]) {

    // 根据输入的整数输出对应星期名

    printf("%s", printDay(7));

    return 0;

}


实例3:用指针变量作为函数的参数,求出10个数的最大值。

#include <stdio.h>


/**

 *  找出数组中的最大值

 *

 *  @param a   传入的数组

 *  @param len 数组长度

 *

 *  @return 最大值

 */

int max(int *a, int len){

    // 定义变量储存最大值

    int max = *a; // 初始化为数组首元素

    // 找出最大值

    for (int i = 1; i < len; i ++) {

        if (*(a +i) > max) {

            max = *(a + i);

        }

    }

    return max;

}

int main(int argc, const char * argv[]) {

    // 定义并初始化一个数组

    int a[10] = {12,23,34,13,999,4,0,-45,9,10};

    

    // 调用函数找出最大值

    int m = max(a, 10);

    

    // 输出最大值

    printf("%d", m);

    return 0;

}



2.函数指针

 函数指针变量:存放函数的首地址的指针变量就是函数指针变量。

 函数指针变量的定义

    返回值类型 (*变量名)(函数的参数);

    int (*p)(int a, int b); // 定义了一个函数指针p,可以存放返回值为int类型,并且有两个int类型的形参的函数

    int (*p1)(int ,int ); // 定义函数指针的时候,可以不用写形参名

 函数指针的初始化

    p = sum; // sum是函数名,存的就是函数在内存中的首地址

 函数指针的使用

    1)定义函数指针

    2)给函数指针初始化

    3)用函数指针间接调用函数

 注意:

    1)函数指针变量不能进行算术运算

    2)函数调用中“(*指针变量名)”的括号不可少


函数指针的使用举例

#include <stdio.h>


// 定义函数

int sum(int a, int b){

    return a + b;

}

int main(int argc, const char * argv[]) {

    // 定义函数指针

    int (*p)(int ,int );

    

    // 给函数指针初始化

    p = sum;

    

    // 用函数指针间接调用函数

    int s = p(23,89); // 也可以写成(*p)(23,89);

    printf("%d", s);

    return 0;

}


传智播客旗下黑马程序员c++视频课程内部讲义 传智播客旗下黑马程序员c++视频课程内部讲义 就是上课时老师翻阅的那个讲义 立即下载

相关推荐

黑马程序员 C语言提高课程配套课件

黑马程序员 C语言提高课程配套课件 黑马程序员 C语言提高课程配套课件

指针函数,函数指针

一、指针函数 指针函数是 返回指针的函数,【主体是函数】,返回值,是一个指针 基本声明形式:返回数据类型 + * + 函数名 + (变量类型1,…); 返回值是 int* 类型 int* fun(int,int); #include<stdio.h> int* fun(int* x) //传入指针 { int* tmp = x; //指针tmp指向x return tmp; //返回tmp指向的地址 } int main() { int b =

weixin_41528527的博客 542

Cadence Sigrity PowerSI实战:从.brd到S参数提取的完整避坑指南

本文详细介绍了使用Cadence Sigrity PowerSI进行信号完整性分析的完整流程,从.brd文件预处理到S参数提取的关键技巧。通过实战案例和避坑指南,帮助工程师高效解决高速PCB设计中的信号质量问题,提升仿真精度和设计效率。

carrot的博客 694

简单c语言程序(switch语句)输入1-7,输出周一到周日

(switch语句)输入1-7,输出周一到周日

寄蜉蝣于天地,渺沧海之一粟 1万+

树莓派4B学习笔记一

树莓派4b烧录Ubuntu20.04&&配置Ubuntu桌面

m0_55202222的博客 3642

2018南京大学计算机夏令营机试

1. Count number of binary strings without consecutive 1’s Given a positive integer n(3≤n≤90), count all possible distinct binary strings of length n such that there are no consecutive 1's . Examples...

climber16的博客 1万+

第6章 C语言的指针数组 (六)

所谓指针数组是指由若干个具有相同存储类型和数据类型的指针变量构成的集合。提示: 需要使用随机函数 srand 和rand。在星期一到星期日中随机一个日期。

微客猿 466

Haclon案例-找出图中面积最大的圆

自带的函数,求得圆的面积和圆心点坐标,然后,用本章所学习的选择算子和循环算子找出面积最大的圆。的图片,试着给它加上不同种类的噪声,然后找出其中面积最大的圆,并将圆的面积标注在其圆心位置。可知,除了六个圆形之外,还有一些微小的噪声点,采用了开运算和特征选择的方法去除噪声。1. 该图片为一灰度图,对其进行二值化,二值化后如图。4. 在面积最大圆的圆心坐标位置写上该圆的面积。

qq_20660115的博客 904

利用指针数组将数字星期几转换为汉字星期几

利用指针数组将数字星期几转换为汉字星期几。 程序运行示例1如下: 请输入星期几(0-6):0 你输入的是星期日 程序运行示例2如下: 请输入星期几(0-6):6 你输入的是星期六 #include <stdio.h> int main(int argc, char *argv[]) { char *week[] = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六.

m0_62995023的博客 2698

清华开源GPGPU“承影Ventus”初体验:用RISC-V RVV指令集跑通第一个OpenCL程序

本文详细介绍了清华大学开源GPGPU“承影Ventus”的开发实践,展示了如何基于RISC-V RVV指令集运行首个OpenCL程序。从环境配置、内核开发到性能优化,全面解析了这一创新架构的开发流程,为开发者提供了在RISC-V生态中进行通用GPU计算的实用指南。

weixin_30415113的博客 490

25、量子计算:中性原子与约瑟夫森结量子比特

本文详细探讨了中性原子和约瑟夫森结两种量子比特在量子计算中的应用。中性原子量子比特利用光晶格实现量子态的操控,具有长相干时间的优势,但面临可扩展性和多量子比特操作的挑战;而约瑟夫森结量子比特基于超导技术,结合半导体制造工艺,具有低耗散和潜在的高可扩展性,但在参数控制和环境干扰方面存在难题。文章还比较了这两种方案的性能、应用场景及未来发展趋势,展望了它们在量子计算发展中的潜力与突破方向。

ol789012的博客 212

用指针数组输入一个表示星期几的数,然后输出相应的英文单词。

#include <iostream> using namespace std; int main() { const char* week[7] = { "Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday" }; int n; while (1) { cout << "Please intput nmuber: ";//用1~7表示星期几 cin >>.

qq_58859800的博客 3260

硬件学习手册【总目录】

欢迎大家来到《硬件学习手册》,专栏主要包括 《硬件经验手册》《电子元器件器件手册》《PCB手册》《CPU手册》《元器件选型手册》五个分册。在开始专栏的更新前,博主先列出专栏的大纲,以供大家参考。大家直接点击大纲中的蓝色标题即可轻松传送。

fydar的博客 5855

黑马程序员----C 语言学习笔记之指针函数与函数指针

一、指针函数 1.返回指针的函数称为指针函数   2.指针函数的定义 一般形式为: 类型说明符 *函数名(形参表){ /*函数体*/ } 例如: //返回两个数中最大数的地址 int *sum(int a, int b){ return a > b ?&a : &b; } int *sum2(int *a, int *b){ ret

chunhuayun的专栏 330

一根同轴线,真的扛得住 4K 吗? ——从摄像头带宽算起,聊透车载 SerDes 接口选型

如果你记住这三句话,这篇文章就值了:🎯摄像头带宽 = 分辨率 × 位深 × fps × 开销4K RAW 摄像头 ≈ 3.7Gbps,是现实不是理论SerDes 选型,宁可多留 20%,不要刚刚好。

weixin_43199439的博客 193

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

黑马程序员——————深入理解C/C++函数指针

在开发某软件过程中遇到这样一个问题,前级模块传给我二进制数据,输入参数为 char* buffer和 int length,buffer是数据的首地址,length表示这批数据的长度。数据的特点是:长度不定,类型不定,由第一个字节(buffer[0])标识该数据的类型,共有256(28 )种可能性。我的任务是必须对每一种可能出现的数据类型都要作处理,并且我的模块包含若干个函数,在每个函数里面都要作

tsh1502的博客 399

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【黑马程序员】C语言基础-指针

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、指针定义          地址指向不同的变量,通过地址能找到所需的变量。将这些地址形象化后成为指针。 二、指针变量         存放地址的变量是指针变量,它用来指向另一个对象。       使用格式:       类型名 *指针变量名;      

liehuodd的博客 304

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

C语言的简单使用(十三、函数指针)

函数指针是指针,指向函数的指针,一个函数在编译时被分配一个入口地址,这个地址就称为函数的指针,函数名代表函数的入口地址。

三日凌空的博客 214

黑马程序员———C语言———【函数指针、指针函数、野指针、内存管理、const关键字】

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- —————————————————————————————————————————————————————————————————— 一、fgets()和fputs() 1、fgets() (1)比较 该函数时一个文件操作相关的函数 原来接收字符串保存到数组中的方法 char

雪碧i的博客 845

黑马程序员-c语言指针总结

一、指针概述     1. 指针概念:          内存单元的编号叫做地址,我们根据内存单元的编号或者地址可以找到所需要的存储单元,我们把这个地址叫做指针。          对于一个内存单元来说,该内存单元的地址就是指针,其中存放的数据才是该内存单元的内容。     2. 使用指针的优点:         1)为函数提供调用和修改变量的灵活手段         2)让函数有多个

qq_30800557的博客 431

黑马程序员————C语言指针

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 1,指针简介     指针是C语言中非常重要的一种数据类型。学习指针是学习C语言中最重要的一环,能否正确理解和使用指针是我们是否掌握C语言的一个标志。 2,指针定义     对指针变量的定义包括三个内容: (1)指针类型说明,即定义变量为一个指针变量; (2)指针变量名;

bluedevils99的专栏 788

黑马程序员——C语言基础---又见指针

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-第一讲 数组名和数组指针变量作函数参数数组名就是数组的首地址,实参向形参传送数组名实际上就是传送数组的地址, 形参得到该地址后也指向同一数组。 这就好象同一件物品有两个彼此不同的名称一样。同样,指针变量的值也是地址, 数组指针变量的值即为数组的首地址,当然也可作为函数的参数使用。float aver(float *

qq_27239329的博客 463

黑马程序员——C语言指针

——- android培训、java培训、期待与您交流! ———-在C语言中,指针占有一个非常重要的位置。所以,学号C语言,就必须学好指针这个变量。 下面,我就对指针这个变量进行详细的解读。一.指针的概念指针:指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 在内存中,变量是这样表示的如int a = 10 ; //定义一个整型变量,赋值为10

c9527ios的博客 486

黑马程序员——C语言基础07—指针

一、指针 1.变量单元的地址称为“指针”,通过指针能找到以他为地址的内存单元。 int main() { int *p; //“*”的第一种含义: 定义 int a = 20; p = &a; // 此时我们称指针变量p指向了变量a *p = 10; //“*”的第二种含义: 访问 a = 20; printf("%d

Peide04271915的博客 548

黑马程序员——c语言基础:指针

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、指针前奏 1.指针的重要性 ·        指针是C语言中非常重要的数据类型,如果你说C语言中除了指针,其他你都学得很好,那你干脆说没学过C语言。 2.需求 ·        voidchange(int  n)函数调用完毕后,改变实参的值 ·        分析:修改实参的值

Big_Zzq的专栏 625
上一篇: 黑马程序员——c语言基础:内存管理
下一篇: 黑马程序员——c语言基础:结构体(基础)
gamhunter
博客等级 码龄12年 15粉丝 27原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值