C语言:main函数

发布于:2024-12-18 ⋅ 阅读:(35) ⋅ 点赞:(0)

main函数原型

定义:main函数有多种定义格式,main函数也是函数,函数相关的结论对main函数也有效(也可以定义main函数的函数指针)。
main函数的完整写法:

int main(int argc,char *argv[]){}
int main(int argc,char *argv){}

扩展写法:

main(){} 等价 int main(){}
int main(void){}
void main(){}
void main(void){}
int main(int a){}
int main(int a,int a,int c){}
...

说明:

  1. argc,argv是形参,它俩可以修改
  2. main函数的扩展写法,有些编译器不支持,编译报警告
  3. argc和argv的常规写法:
    • argc:存储了参数个数
    • argv:存储了所有参数的字符串形式
#include <stdio.h>
int main(int argc,char *argv[])
{
printf("argc=%d\n",argc);
int i = 1;
for(;i < argc; i++)
{
printf("%s,%s\n",argv[i],*(argv+i));// 下标法和指针法
}
return 0;
}
  1. main函数是系统通过函数指针的回调

建议:

  1. 如果一个函数需要返回数组,建议将这个函数定义成指针函数(返回值为指针的函数)
  2. 如果一个被调函数需要接收主调函数传递一个非char类型的数组,建议被调函数的参数用
    数组指针
#include <stdio.h>
/**
* 定义一个函数,从从成绩中求某一个学生的成绩
* @param n 索引,表示某个学生
* @param arr 数组指针,表示总成绩
*/
float* get_score(float (*arr)[4],int n)
{
return arr[n];// *(arr+n)
}
int main(int argc,char *argv[])
{
// 创建一个二维数组
float scores[3][4] = {{66,67,78,88},{99,89,78,86},{56,78,67,57}};
float *p = get_score(scores,1);
printf("%5.2f\n",*(p+2));
return 0;
}
  1. 如果一个被调函数的参数是一个字符数组 {“aaa”,“bbb”…} ,建议将参数类型定义为字符指针数组 char *arr[] 或者字符二级指针 char **arr
#include <stdio.h>
// 需求:用一个指针数组, 存储一组字符串,要求写一个函数,取出数组中的字符串
char* get_str(char **p,int n)
{
return *(p+n);
}
int main(int argc,char *argv[])
{
// 指针数组
char *arr[3] = {"hello","wangwu","zhangsan"};
char *str = get_str(arr,1);
printf("%s\n",str);
return 0;
}
  1. 如果需要将一个函数作为另一个函数的形参,建议将该函数的形参用函数指针表示
int add(int a,int b){ return a+b; }
int jisuan(int a,int b,int (*ADD)(int,int))
{
printf("开始计算:\n");
// 执行函数add
ADD(a,b);
}
int main()
{
int a = 5,b = 3;
jisuan(a,b,add);
}

网站公告

今日签到

点亮在社区的每一天
去签到