C语言函数

一、函数

·

函数三要素

函数名 功能名字

参数列表 y = f(x) 或者y =f(x,y)

返回值 y = f(x)

二、   函数的定义、调用

2.1 无参函数

#include <stdio.h>
#include <stdlib.h>

void getpid()
{
    printf("f \r\n");
}
int main() {
  printf("fine \r\n");
  
  return 0;
}

2.2 有参函数

#include <stdio.h>
#include <stdlib.h>

int getadd(int x,int y) {
  return x+y;
}
int main() {
  int a;
  int b;
  int ans = 0;
  printf("fine \r\n");
  puts("please sent two num to add ! \r\n");
  scanf("%d %d",&a,&b);
  ans = getadd(a,b);

  printf("Get Num = %d \r\n",ans);
  return 0;
}

2.3 占位

#include <stdio.h>
#include <stdlib.h>

void getpid()
{
 
}
int main() {
  getpid();
  printf("fine \r\n");
  
  return 0;
}

三、实参和形参

#include <stdio.h>
#include <stdlib.h>

int show(int x) {
  printf("x =%d x 's address =%p \r\n",x,&x);
}
int main() {
  int x = 10 ;

  printf("x =%d main x's = %p \r\n",x,&x);
  show(x);
  
  return 0;
}

形参和实参值相同,但是地址空间不同

四、函数嵌套

#include <stdio.h>
#include <stdlib.h>

void init()
{}
void fin()
{
  init();
}
int main() {
  fin();
  return 0;
}

五、函数递归

#include <stdio.h>
#include <stdlib.h>

int  getage(int num) {
  int result = 0;
  if(num == 1) {
    result = 10;
  } else {
    result = getage(num - 1) + 1;
  }
 return result;
}

int main() {
 
  int num = 0;
  int ans = 0;
  puts("sent stu age num");
  scanf("%d",&num);

  ans = getage(num);
  
  printf("ans =%d \r\n",ans);
  return 0;
}

六、阶乘

#include <stdio.h>
#include <stdlib.h>

int  getage(int num) {
  int result = 0;
  if(num == 1) {
    result = 1;
  } else {
    result = getage(num - 1)*num;
  }
 return result;
}

int main() {
 
  int num = 0;
  int ans = 0;
  puts("sent stu age num");
  scanf("%d",&num);

  ans = getage(num);
  
  printf("ans =%d \r\n",ans);
  return 0;
}

七、数组作为函数的参数

#include <stdio.h>
#include <stdlib.h>


void printData(int data) {
  printf("Data = %d \r\n",data);
}

void printArr(int shuzu[3]) {
  int i = 0;

  for(i = 0; i <3; i++) {
    printf("%d ",shuzu[i]);
  }
}
int main() {
  int arry[3] = {1,2,3};
  printData(arry[0]);
  printArr(arry);

  return 0;
}

八、数组传参

一维数组传参

int array[],是一个地址,不是

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void printKarray(int array[],int len) {
  int i = 0;

  for(i =0 ; i < len; i++) {
    printf(" %d ",array[i]);
  }

}


int main() {
  int array[5] = {1,2,3,4,5};
  int size = sizeof(array)/sizeof(array[0]);

  printKarray(array,size);


  return 0;
}

二维数组传参

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void printKarray(int array[][3], int hang, int lie) {
  int i = 0;
  int j = 0;

  for(i = 0; i <hang; i++) {
    for(j = 0; j < lie; j++) {
      printf("%d ",array[i][j]);
    }
    puts("\r\n");
  }

}


int main() {
  int array[2][3] = {1,2,3,4,5,6};
  int hang = 0;
  int lie = 0;

  printKarray(array,2,3);
  return 0;
}

九、外部变量和全局变量

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int a = 10;
int b = 20;

void printKL()
{
  printf("%d %d \n",a,b);
}

void printML()
{
  a =90;
  printf("%d %d \n",a,b);
}

int main() {
  printKL();
  printML();
  printKL();
  return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值