嵌入式-C语言基础:指针函数
指针函数:返回指针的函数,即函数返回一个地址。例如:int * a(int x,int y);由于()的优先级比*高,因此a先与()结合,a(int x,int y)显然是一个函数,函数前面带一个int * 表示返回值为int *
类型,也就是指向整型的地址。
输入一个学生编号,打印一个学生得成绩:
#include<stdio.h> //定义一个指针函数:获取输入学生下标对应得地址,传数学生得下标和一个指针数组
int * getposPerson(int pos,int (*pstu)[4]){
int * p;
p = (int*)(pstu+pos);//数组名pstu表示指针数组得首元素得地址,也就是scores[0]得地址,首地址偏移pos就是一维得成绩数组偏移
return p;
}
int main()
{
//定义3*4的二维数组:表示3个人的四门课的成绩(二维数组可以理解为存放了多个一维数组得数组,如果知道多个一维数组得地址,就可遍历多个数组)
// int a1[4]={45,46,47,58};
// int a2[4]={85,56,87,98};
// int a3[4]={100,100,100,89};
//数组名表示地址,所以姑且把二维数组当作指针数组来用
int scores[3][4]={
{45,46,47,58},
{85,56,87,98},
{100,100,100,89}
};
int pos;
int *ppos;
printf("请输入学生下标:\n");
scanf("%d",&pos); //获取该学生成绩数组得首地址,scores(理解为a1)表示首元素得地址,也就是第一个成绩数组得地址
ppos=getposPerson(pos,scores);
printf("该学生得成绩首地址:%p",ppos);
printf("该学生得成绩:\n");
for(int i=0;i<3;i++)
{
printf("该学生得成绩:%d\n",*(ppos+i));
}
return 0;
}
输出结果:
请输入学生下标:
1
该学生得成绩首地址:000000000061FDF0该学生得成绩:
该学生得成绩:85
该学生得成绩:56
该学生得成绩:87
嵌入式-C语言基础:指针函数的更多相关文章
- 嵌入式-C语言基础:函数指针
定义函数地址:如果在程序中定义了一个函数,那么在编译的时候,编译系统为函数代码分配一段存储空间,这段存储空间的起始地址(也叫入口地址)称为这个函数的地址. 和数组一样,数组名代表地址,而函数名表示函数 ...
- Go语言基础之函数
Go语言基础之函数 函数是组织好的.可重复使用的.用于执行指定任务的代码块.本文介绍了Go语言中函数的相关内容. 函数 Go语言中支持函数.匿名函数和闭包,并且函数在Go语言中属于“一等公民”. 函数 ...
- GO学习-(12) Go语言基础之函数
Go语言基础之函数 函数是组织好的.可重复使用的.用于执行指定任务的代码块.本文介绍了Go语言中函数的相关内容. 函数 Go语言中支持函数.匿名函数和闭包,并且函数在Go语言中属于"一等公民 ...
- Java之--Java语言基础组成—函数
Java语言基础组成-函数 Java语言由8个模块构成,分别为:关键字.标识符(包名.类名.接口名.常量名.变量名等).注释.常量和变量.运算符.语句.函数.数组. 本片主要介绍Java中的函数,函数 ...
- Java 语言基础之函数
函数的定义: 函数就是定义在类中的具有特定功能的一段独立小程序 函数也称为方法 函数定义格式: 修饰符 返回值类型 函数名(参数类型 形式参数1, 参数类型 形式参数2,...) { 执行语句; re ...
- 编程一一C语言问题,指针函数与函数指针
资料来源于网上: 一.指针函数:指返回值是指针的函数 类型标识符 *函数名(参数表) int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个地址值.函数返 ...
- C语言讲义——指针函数和函数指针
指针函数 返回值是指针的函数,如void* malloc(...) #include<stdio.h> #include<stdlib.h> #include<strin ...
- C语言关于指针函数与函数指针个人理解
1,函数指针 顾名思义,即指向函数的指针,功能与其他指针相同,该指针变量保存的是所指向函数的地址. 假如是void类型函数指针定义方式可以是 void (*f)(参数列表);亦可以先用 typedef ...
- 嵌入式-C语言基础:字符串拼接函数strcat
#include<stdio.h> #include <string.h> //实现字符串拼接 char * mystrcat(char * dest,char * src) ...
随机推荐
- 从零教你使用MindStudio进行Pytorch离线推理全流程
摘要:MindStudio的是一套基于华为自研昇腾AI处理器开发的AI全栈开发工具平台,该IDE上功能很多,涵盖面广,可以进行包括网络模型训练.移植.应用开发.推理运行及自定义算子开发等多种任务. 本 ...
- vim编辑器使用详解
Linux之vim编辑器使用 vim三种模式:命令模式,插入模式,退出模式 移动光标操作 左移动一个字符: 按 h 键 右移动一个字符:按 l 键 下移动一行:按 j 键 上移动一行:按 k 键 移动 ...
- 坚守自主创新,璞华HawkEye IETM系统惠及国计民生
可上九天揽月,可下五洋捉鳖,这是我们很多年的梦想.而要实现这样的梦想,不仅需要安全可靠的技术装备,还需要让这些技术装备处于良好的维保状态.于是,作为装备维保过程中必须的知识创作.管理.发布.浏览工具, ...
- 【COS生态建设】开发者有奖调研,等你来参与!
为了更好的赋能开发者,为大家提供更好的开源应用,我们诚挚的邀请您抽出几分钟参与"有奖问卷",告诉我们您对"COS生态建设"的意见和建议.希望通过这份调查问卷,能 ...
- 使用调度器apscheduler实现py文件不停连接MySQL数据库
背景说明: 使用内网负载均衡添加后端主机,该主机安装有nginx,其配置文件代理内网的MySQL数据库地址 (数据库是主备形式的,重启的话会都重启) 需要测试两个目标: (采用不停往MySQL里写数据 ...
- Elasticsearch:Smart Chinese Analysis plugin
Smart Chinese Analysis插件将Lucene的Smart Chinese分析模块集成到Elasticsearch中,用于分析中文或中英文混合文本. 支持的分析器在大型训练语料库上使用 ...
- ELK Stack 日志平台性能优化
转载自: https://mp.weixin.qq.com/s?__biz=MzAwNTM5Njk3Mw==&mid=2247487789&idx=1&sn=def0d8c2e ...
- 第二章:视图层 - 5:HttpRequest对象
每当一个用户请求发送过来,Django将HTTP数据包中的相关内容,打包成为一个HttpRequest对象,并传递给每个视图函数作为第一位置参数,也就是request,供我们调用. HttpReque ...
- 从Spring Cloud微服务视角理解Kubernetes
- python及第三方库交叉编译
一.前言: 网上关于python的交叉编译的文章很多,但是关于python第三库的交叉编译的文章就比较少了,而且很多标题是第三方库的交叉编译,但是实际上用到的都是不需要交叉编译就能用的库,可参考性不强 ...