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文章
7597浏览量
136117 -
函数
+关注
关注
3文章
4303浏览量
62411 -
指针
+关注
关注
1文章
479浏览量
70506
发布评论请先 登录
相关推荐
C语言指针作为形参怎么改变其指向的地址
] = {1,2,3};void fcn(参数);void main (){ int* a; fcn(输入参数a)} 执行完fcn后,使参数的地址改变,这个功能怎么来实现呢? 首先说明结论:使用二级指针。 为了更好的理解这个问题,我们首先来学习一下指针最经典
C语言教程之函数指针变量与指针函数的区别(下篇)
z=(*pfun)(x,y); //调用函数指针变量,实参x和y的值传递给形参a和b
printf(“max=%dn”,z); //形
发表于 05-22 07:30
•1968次阅读
评论