0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C语言-指针作为函数形参类型

DS小龙哥-嵌入式技术 来源:DS小龙哥-嵌入式技术 作者:DS小龙哥-嵌入式技 2022-08-14 10:05 次阅读

1. 前言

C语言函数里最常用就是指针传参和返回地址,特别是字符串处理中,经常需要封装各种功能函数完成数据处理,并且C语言标准库里也提供了string.h 头文件,里面包含了很多字符串处理函数;这些函数的参数和返回值几乎都是指针类型。这篇文章就介绍如何使用指针作为函数参数、并且使用指针作为函数返回值。

下面通过几个示例代码来演示用法。

2. 通过指针间接修改主函数里局部变量空间的值

#include 
#include 
void func(int *p);
int main()
{
	int a=100;
	func(&a);
	printf("a=%d\n",a); //200
	return 0;
}

void func(int *p)
{
	printf("p=%d\n",*p);
	*p=200;
}

3. 在子函数里通过指针类型间接交换main函数里局部变量空间的值

#include 
#include 
void func(int *a,int *b);
int main()
{
	int a=100,b=200;
	func(&a,&b); //func(100,200)
	printf("a=%d,b=%d\n",a,b);
	return 0;
}

void func(int *a,int *b)
{
	int c;
	c=*a;
	*a=*b;
	*b=c;
}
//return语句只能返回一个值
//如果函数想返回多个值,可以使用指针(形参)实现。

4. 函数返回指针类型

#include 
#include 
char *func(char *p);

int main()
{
	char str[]="1234567890";
	char *p;
	p=func(str);
	printf("%s\n",p); //
	return 0;
}

char *func(char *p)
{
	p+=3; //p向后偏移3个字节
	return p;
}

5. 编写一个计算字符串长度的函数

函数功能: 传入字符串,返回字符串的长度。

与strlen函数功能一样即可。

#include 
#include 
int my_strlen(char *p); //函数声明
int main()
{
	char buff[100];
	int len;
	
	printf("请输入字符串:");
	scanf("%s",buff);
	
	len=my_strlen(buff);
	printf("len=%d\n",len);
	return 0;
}

//每个函数的功能要单一

//计算字符串长度。  字符串特点结尾是有'\0'
//"1234567890"
int my_strlen(char *p)
{
	char *str=p;
	while(*str++!='\0'){}
	return str-p-1;
}

6. 编写一个字符串排序函数

函数功能: 传入字符串,在函数里实现字符串从大到小或者小到大排序。

注意: 从大到小或者小到大排序可以通过函数形参区分。

#include 
#include 
int my_strlen(char *p); //函数声明
void str_sort(char *p,char flag);//函数声明
int main()
{
	char buff[100];
	int len;
	
	printf("请输入字符串:");
	scanf("%s",buff);
	
	//进行排序
	str_sort(buff,0);
	printf("从小到大排序=%s\n",buff);
	str_sort(buff,1);
	printf("从大到小排序=%s\n",buff);
	return 0;
}

//每个函数的功能要单一

//计算字符串长度。  字符串特点结尾是有'\0'
//"1234567890"
int my_strlen(char *p)
{
	char *str=p;
	while(*str++!='\0'){}
	return str-p-1;
}

/*
函数功能: 实现字符串排序.支持从小到大或者大到小
函数形参: 
	char *p  将要排序的字符串
	char flag  选择排序方式  0表示从小到大排序  1表示大到小排序
*/
void str_sort(char *p,char flag)
{
	int len;
	int i,j,tmp;
	len=my_strlen(p);
	for(i=0;ip[j+1])
				{
					tmp=p[j];
					p[j]=p[j+1];
					p[j+1]=tmp;
				}
			}
		}
	}
}

//unsigned char a; // 0~255   占1  =8位    1111 11111
//char a; //-128 ~ +127  
;i++)>

7.变量默认的系统初始化值

#include 
#include 
int a1;
int main()
{
	int a2;
	static int a3;
	printf("a1=%d\n",a1); //0
	printf("a2=%d\n",a2); //随机值
	printf("a3=%d\n",a3); //0
	return 0;
}
/*
全局变量默认值是0
局部变量默认值是随机值(系统没有赋值)
静态变量默认值是0
*/

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7528

    浏览量

    128299
  • 函数
    +关注

    关注

    3

    文章

    3864

    浏览量

    61305
  • 指针
    +关注

    关注

    1

    文章

    473

    浏览量

    70361
收藏 人收藏

    评论

    相关推荐

    C语言函数的返回值指向一个指针

    函数的返回值类型必须与函数体内的返回表达式的类型相匹配。如果类型不匹配,编译器会报错。此外,C 语言
    的头像 发表于 04-26 11:01 2010次阅读
    C<b class='flag-5'>语言</b>中<b class='flag-5'>函数</b>的返回值指向一个<b class='flag-5'>指针</b>

    C语言中指针函数函数指针的概念及应用示例

    在C语言中,指针函数函数指针是强大且常用的工具。它们允许我们以更灵活的方式处理函数和数据,进而
    发表于 08-16 16:14 337次阅读

    一文详解函数指针与回调函数

    函数指针是指向函数指针变量。它允许我们将函数作为参数传递给其他
    发表于 08-22 10:36 190次阅读

    函数的实参与

    和实参出现不同类型时,则按照不同类型数值的赋值规则进行转换。主调函数在在调用函数之前,应对被调函数做原型声明。实参向
    发表于 10-18 20:15

    C语言——指针、数组和函数

    C语言——指针、数组和函数基本解释   1、指针的本质是一个与地址相关的复合类型,它的值是数据存
    发表于 04-20 15:25

    函数为volatile类型,这个有什么意义?

    ((HAL_GetTick() - tickstart) < Delay){}}这是用STM32CubeMX生成的带操作系统工程里面的一个函数,如何理解Delay前面的__IO,还望各路高手指导。
    发表于 11-23 16:44

    函数指针指针函数

    ) ([列表]); 注1:“返回值类型”说明函数的返回类型,“(指针变量名 )”中的括号不能
    发表于 01-22 19:28

    c语言指针详解

    调用中,值传递都是“按值传递”的,如果我们要在函数中修改被传递过来的对象,就必须通过这个对象的指针来完成。3.指针是什么? 我们指知道:C语言
    发表于 03-26 09:51

    指针作为函数参数

    指针作为函数参数 大多数C程序员开始使用指针时是用它们实现函数的参数,所谓可变参数。为了理解可变参数是如何工作的,我们看看在C
    发表于 07-29 11:49 2626次阅读

    C语言指针函数函数指针详细介绍

    C语言指针函数函数指针详细介绍。。。。。。。
    发表于 03-04 15:27 5次下载

    C语言指针函数访问

    C语言指针函数访问
    发表于 12-16 17:23 1次下载

    c语言函数指针定义,指针函数函数指针的区别

     往往,我们一提到指针函数函数指针的时候,就有很多人弄不懂。下面就由小编详细为大家介绍C语言函数
    发表于 11-16 15:18 3400次阅读

    C语言-内联函数、递归函数指针函数

    这篇文章介绍C语言的内联函数、递归函数函数指针指针函数
    的头像 发表于 08-14 10:03 1364次阅读

    C语言-void类型作为万能指针类型

    void类型在基本数据类型里是`空类型`,`无类型`; void类型常用来当做函数的返回值,
    的头像 发表于 08-14 10:04 1476次阅读

    函数类型函数指针类型的区别

    平时用的更多的是函数指针类型,比如作为函数参数传入回调函数等等。实际上
    发表于 10-24 14:27 149次阅读