指针与函数

指针函数:函数的返回值可以是整型值、浮点型值、字符型值等,在C语言中还允许一个函数的返回值是一个指针(地址),这种返回指针的函数称为指针函数。

指针函数语法格式:

基类型 * 函数名(参数列表);

指针函数代码示例:

#include<stdio.h>
int * func(int * arr,int size)//第一个*返回值是指针 
{int * p = arr;int i;for(i=0;i<size;i++){if(*(arr+i)>*p){p = arr + i;} }return p;
}
int main()
{int arr[5]={8,3,9,5,2};int *p = func(arr,5);printf("数组中最大的元素是:%d,其地址是:%d\n",*p,p);return 0;
}

函数指针变量的定义:如果在程序中定义了一个函数,在编译时,编译器为函数代码分配一段存储空间,这段存储空间的起始地址(又称入口地址)称为这个函数的指针。

定义一个指向函数的指针变量,用来存放某一函数的起始地址 ,这就意味着此指针变量指向该函数。

函数指针语法格式:

返回值类型(*变量名)(参数列表);

函数指针变量代码示例:

#include<stdio.h>
//定义函数
int func(int a,int b)
{return a + b;
} 
int main()
{int result;int(*p)(int,int);    //定义函数指针变量 p = func;           //函数指针指向函数 result = (*p)(3,5);//通过函数指针调用函数printf("(*p)(3,5) = %d\n",result);return 0; 
}

函数指针作为函数参数:指向函数的指针变量的一个重要作用是把函数的地址作为参数传递到其他函数。函数指针作为函数参数,把函数的入口地址传递给形参,就能在被调函数中使用实参函数了。

void func(int(*p)(int,int),int b,int n);

代码示例:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{int arr[5];int *p[5];int *temp;int i,j;srand((unsigned int)time(0));//强制类型转换for(i=0;i<5;i++){arr[i]=rand()%10;} //原始数组 printf("初始数组元素:");for(i=0;i<5;i++){printf("%d ",arr[i]);}printf("\n");//从小到大排序 for(i=0;i<5;i++){p[i]=&arr[i];}for(i=3;i>=0;i--){for(j=0;j<=i;j++){if(*p[j]>*p[j+1]){temp=p[j];p[j]=p[j+1];p[j+1]=temp;}}}printf("从小到大排序:"); for(i=0;i<5;i++){printf("%d ",*p[i]);}printf("\n");//现在的数组printf("现在数组元素:");for(i=0;i<5;i++){printf("%d ",arr[i]);}printf("\n"); return 0;
}

随机生成指定长度的字符串

代码示例:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{int len,i;char *buffer=NULL;//接收maloocsrand((unsigned int)time(0));printf("你想要多长的串:"); scanf("%d",&len);buffer=(char*)malloc(len+1);if(buffer==NULL)exit(1);for(i=0;i<len;i++){buffer[i]=rand()%26+'a';}buffer[len]='\0';//字符串结束标志 空字符printf("随机数:%s\n",buffer);free(buffer);//释放空间 return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/144297.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker存储驱动之- overlay2

docker支持多种graphDriver&#xff0c;包括vfs、devicemapper、overlay、overlay2、aufs等等&#xff0c;其中最常用的就是aufs了&#xff0c;但随着linux内核3.18把overlay纳入其中&#xff0c;overlay的地位变得更重&#xff0c;最近也在自己的虚拟机上用overlay2作为docker…

基于Vue+SpringBoot的城市桥梁道路管理系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询城市桥梁4.2 新增城市桥梁4.3 编辑城市桥梁4.4 删除城市桥梁4.5 查询单个城市桥梁 五、免责说明 一、摘要 1.1 项目介绍 基于VueSpringBootMySQL的城市桥梁道路管理系统&#xff0c;支持…

redis相关文章汇总

一、redis结构 1-redis-功能分类 跳转 redis数据结构对比跳转 以下链接忽略&#xff1a; 01-Redis数据结构-汇总跳转 02-Redis数据结构-List跳转 03-Redis数据结构-dict跳转 二、redis问题攻克难点 缓存穿透、缓存雪崩、缓存击穿区别和解决方案跳转 DB和缓存一致性的问题…

flutter pod install, Error installing FMDB

这是我的错误提示 [!] Error installing FMDB [!] /usr/bin/git clone https://github.com/ccgus/fmdb.git /var/folders/gs/npkkfph92xndgh137z132qf00000gn/T/d20231113-95745-x4208e --template --single-branch --depth 1 --branch 2.7.5Cloning into /var/folders/gs/npk…

本地化小程序运营 同城小程序开发

时空的限制让本地化的线上平台成为一种追求&#xff0c;58及某团正式深挖人们城镇化、本地化的信息和商业需求而崛起的平台&#xff0c;将二者结合成本地化小程序&#xff0c;显然有着巨大的市场机会。本地化小程序运营可以结合本地化生活需求的一些信息&#xff0c;以及激发商…

最长上升子序列模型 笔记

首先附上模板&#xff1a; #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define endl \nusing namespace std;typedef pair<int, int> PII; typedef long long ll;const int N 100010;int n; int a[N], q[N];int main()…

开源大模型部署及推理所需显卡成本必读之二

在前面的文章中&#xff0c;我们介绍了大模型占用显卡空间的一些分析情况&#xff0c;这次我们继续来看看具体量化角度上的结论。 因此&#xff0c;本文来来介绍一个偏具体数值量化的工作。 随着各厂商相继发布大型模型&#xff0c;排行榜变化频繁&#xff0c;新旧交替&#xf…

代码静态测试工具之cppcheck

cppcheck简介 Cppcheck is an analysis tool for C/C code. It provides unique code analysis to detect bugs and focuses on detecting undefined behaviour and dangerous coding constructs. The goal is to detect only real errors in the code, and generate as few f…

C#密封类和密封成员

密封类和密封成员需要使用 sealed 修饰符&#xff0c;他可以防止当前类被继承或者防止派生类在继承的过程中重写某个方法。 与abstract抽象修饰符类似&#xff0c;sealed 修饰符不仅可用来修饰class&#xff0c;同样也可以修饰类成员。如果sealed关键词用在class上&#xff0c…

AIGC实战——变分自编码器(Variational Autoencoder, VAE)

AIGC实战——变分自编码器 0. 前言1. 变分自编码器1.1 基本原理1.2 编码器 2. 构建VAE编码器2.1 Sampling 层2.2 编码器2.3 损失函数2.4 训练变分自编码器 3. 变分自编码器分析小结系列链接 0. 前言 我们已经学习了如何实现自编码器&#xff0c;并了解了自编码器无法在潜空间中…

React-Router源码分析-History库

history源码 history 在 v5 之前使用单独的包&#xff0c; v6 之后再 router 包中单独实现。 history源码 Action 路由切换的动作类型&#xff0c;包含三种类型&#xff1a; POPREPLACEPUSH Action 枚举&#xff1a; export enum Action {Pop "POP",Push &quo…

OCR转换技巧:如何避免图片转Word时出现多余的换行?

在将图片中的文字识别转换为Word文档时&#xff0c;我们很多时候时会遇到识别内容的一个自然段还没结束就换行的问题&#xff0c;这些就是我们常说的多余换行的问题。为什么会产生这个问题呢&#xff1f;主要是由于OCR返回的识别结果是按图片上的文字换行而换行&#xff0c;而不…

算法通关村第十一关|白银|位运算高频算法题【持续更新】

1.位移 1.1 位1的个数 原题&#xff1a;力扣191. 挨个判断是不是 1 的话需要对整个长度进行遍历&#xff0c;但是采用技巧可以只寻找为 1 的位&#xff0c;然后将其数量记录下来。 public int hammingWeight(int n) {int count 0;while (n ! 0) {n n & (n - 1);count…

高并发架构设计(三大利器:缓存、限流和降级)

引言 高并发背景 互联网行业迅速发展&#xff0c;用户量剧增&#xff0c;系统面临巨大的并发请求压力。 软件系统有三个追求&#xff1a;高性能、高并发、高可用&#xff0c;俗称三高。三者既有区别也有联系&#xff0c;门门道道很多&#xff0c;全面讨论需要三天三夜&#…

web3资讯及远程工作

各位如果想了解区块链相关的消息可以通过如下网址了解&#xff0c;里面还会有相关职位招聘&#xff08;包括远程工作&#xff09;&#xff0c;还可以在里面进行发帖&#xff0c;进入即可获得1000积分&#xff0c;后期可以兑换一些礼品Cryptosquare

如何检查 Docker 和 Kubernetes 是否可以访问外部网络,特别是用于拉取镜像的仓库?

要检查 Docker 和 Kubernetes 是否可以访问外部网络&#xff0c;尤其是用于拉取容器镜像的仓库&#xff0c;您可以按照以下步骤进行&#xff1a; 1. 检查节点的网络连接 首先&#xff0c;您需要确保 Kubernetes 节点能够访问外部网络。这可以通过在节点上执行 ping 命令来测试…

git 简单入门

git init touch test.txt git add test.txt git commit -m 初始化 仓库 git log //查找日志 git checkout -b dev //创建并切换dev分支 git branch // 查找分支 此时有master 和 dev分支&#xff0c; 此时在dev分支 dev分支也有test.txt文件 vim test.txt //写入dev …

2023 年 数维杯(B题)国际大学生数学建模挑战赛 |数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2021年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题。 让我们来看看数维杯&#xff08;B题&#xff09;&#xff01; …

LeetCode617. Merge Two Binary Trees

文章目录 一、题目二、题解 一、题目 You are given two binary trees root1 and root2. Imagine that when you put one of them to cover the other, some nodes of the two trees are overlapped while the others are not. You need to merge the two trees into a new b…

一文看懂Spark中Cache和CheckPoint的区别

目录 循循渐进理解使用Cache或者PersistCheckPoint缓存和CheckPoint的区别 循循渐进理解 wc.txt数据 hello java spark hadoop flume kafka hbase kafka flume hadoop看下面代码会打印多少条-------------------------(RDD2) import org.apache.spark.rdd.RDD import org.ap…