首页 > 其他分享 >C语言-函数

C语言-函数

时间:2023-09-03 16:01:28浏览次数:38  
标签:函数 int sum C语言 char str 实参

函数基本用法

  • 举例:两数求和
    #include <stdio.h>
    
    int sum(int, int);// 函数的声明,函数的原型
    
    int main(int argc, char const *argv[])
    {
    	int m = 10;
    	int n = 20;
    	int s;
    	s = sum(m,n);
    	printf("%d\n", s);
    }
    
    int sum(int a, int b){
    	int sum;
    	sum = a + b;
    	return sum;
    }
    

函数的参数/传递

  • 全局变量:即函数体外说明的变量,它们在程序中的每个函数里都是可见的。(不建议使用)
  • 复制传递方式:调用函数将实参传递给被调用函数,被调用函数将创建同类型的形参并用实参初始化。形参是新开辟的存储空间,因此,在函数中改变形参的值,不会影响到实参。
  • 地址传递方式:按地址传递,实参为变量的地址,而形参为同类型的指针。被调用函数中对形参的操作,将直接改变实参的值(被调用函数对指针的目标操作,相当于对实参本身的操作)。

编写一个删除字符串中空格的函数

void del_space(char *p);
int main(int argc, char *argv[])
{
	char a[] = "  abd  dd ";
	puts(a);
	del_space(a);
	puts(a);

	return 0;
}

void del_space(char *p){

	char *q;
	q = p;

	while(*p){
		if(*p==' '){
			p++;
		}else{
			*q = *p;
			p++;
			q++;
		}
		*q= '\0';
	}
}

指针函数使用举例

  1. 错误演示
    • 局部变量运行在栈内存中,函数运行结束就回收内存
    • 野指针概念:指针变量中的值是非法的内存地址
      char * getstring();
      
      int main(int argc, char *argv[])
      {
              char * r;      
              r = getstring();
              printf("%p\n",r);
              printf("---%s---\n", getstring());
              puts(r);
              return 0;
      }
      
      char * getstring() 
      {
              // char str[20];// 错误写法(野指针),局部变量运行在栈内存中。函数结束就内存就回收了。
              // char str[20] = "welcome"; // 错误写法,同上。字符数组,可以修改。
              static char str[20]; // 正确
              // char * str = "welcome"; // 字符串常量,正确,但是不能修改。
              strcpy(str, "hello");
              printf("%p\n",str);
              return str;
      }
      // 运行结果
      // 0xbfab5fc8
      // 0xbfab5fc8
      // 0xbfab5fc8
      // ---`����V���l�ԅ�_��---
      
  2. 将输入的int类型的数字转换为字符串输出
    • 数组名就是地址
      char * itoa(char *p, int n);
      int main(int argc, char *argv[])
      {
              int n;
              char  s[50], * r;
      
              printf("input:");
            scanf("%d", &n);
      
            itoa(s, n);
            puts(s);
      
            return 0;
      }
      
      char * itoa(char *p, int n)
      {
            int r, i = 0, j;
      
            while (n) {
                    r = n % 10;
                    n /= 10;
                    p[i] = r + '0';
                    i++;
            }
            p[i] = '\0';
      
            j = i-1;
            i = 0;
      
            while (i < j) {
                    r = p[i];
                    p[i] = p[j];
                    p[j] = r;
                    i++;
                    j--;
            }
            return p;// 数组名就是地址
      }
      

标签:函数,int,sum,C语言,char,str,实参
From: https://www.cnblogs.com/Wang-py/p/17675077.html

相关文章

  • 基于qsot库函数进行排序
    #include<stdio.h>#include<stdlib.h>intcmp_int(constvoid*e1,constvoid*e2){//进行比较return(int)e1-(int)e2;}intcmp_f(constvoid*e1,constvoid*e2){if((float)e1>(float)e2){return1;}elseif((float)e1==(float)e2){retu......
  • 无涯教程-JavaScript - RANK函数
    RANK函数取代了Excel2010中的RANK.EQ函数。描述该函数返回数字列表中数字的等级。数字的等级是其相对于列表中其他值的大小。如果对列表进行排序,则数字的排名将是其位置。语法RANK(number,ref,[order])争论Argument描述Required/OptionalNumberThenumberwhose......
  • 无涯教程-JavaScript - QUARTILE函数
    QUARTILE函数取代了Excel2010中的QUARTILE.INC函数。描述该函数返回数据集的四分位数。四分位数通常用于销售和调查数据中,以将人群分为几类。语法QUARTILE(array,quart)争论Argument描述Required/OptionalArrayThearrayorcellrangeofnumericvaluesforwhi......
  • 无涯教程-JavaScript - PERCENTRANK函数
    PERCENTRANK函数取代了Excel2010中的PERCENTRANK.INC函数。描述该函数以数据集的百分比形式返回数据集中的值的排名。此功能可用于判断数据集中值的相对位置。语法PERCENTRANK(array,x,[significance])争论Argument描述Required/OptionalArrayThearrayorrangeo......
  • C语言自增++放前面还是后面?
    《STL标准程序》里边一直提到前置比后置效率更高。关于此的一点个人理解记录下来。a++:加的过程中要先产生一个临时变量temp,加1之后的值赋给temp,然后你可以使用a(在if、for、while..中),最后再把temp的值assign给a。++a:这个就是直接在a上加1了,然后改怎么用,就怎么用。归根结底:二者的......
  • 五、函数
    函数定义:定义成函数后,再通过调用函数来实现代码的复用性。1.语法规则:def函数名():存放要封装的代码,重复的代码2.解释函数的组成部分def是关键字,定义函数的关键字3.函数的调用:函数名()4.return的用法(关键字):return返回的值是可以把值赋值给变量的。用法主要有两......
  • 函数高级
    函数默认参数、占位参数,函数重载1#include<iostream>2usingnamespacestd;34//1、函数默认参数5//如果传入数据,使用传入的数据,没有则用默认的6//函数声明与实现只能由一个有默认参数7intfunc(inta,intb=20,intc=30)8{9returna+b+c;10}1......
  • 回调函数解决代码冗余问题
    1.代码功能:实现简单计算器功能:加减乘除2.代码:#include<stdio.h>voidmenu(){ printf("**********************************\n"); printf("**0.eixt1.Add2.Sub3.Mul4.Div**\n"); printf("**********************************\n");}intAdd......
  • 计算机萌新的成长历程——初识C语言16
    大家好,很高兴又能跟各位朋友见面了,前面我们花了两篇内容来探讨操作符的相关内容,今天咱们要开始探讨新的内容了——常见关键字。对于常见关键字,我是这样理解的——C语言中自带的可以直接使用的字符,比如咱们的数据类型:int、char、short、long、longlong、float、double……又比如咱......
  • 无涯教程-JavaScript - NEGBINOMDIST函数
    NEGBINOMDIST函数取代了Excel2010中的NEGBINOM.DIST函数。描述该函数返回负二项式分布。NEGBINOMDIST返回在第number_s次成功之前出现number_f次失败的概率,而成功的恒定概率是概率_s。该函数与二项式分布相似,不同之处在于成功次数是固定的,而试验次数是可变的。像二项式一......