欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > C语言:main函数

C语言:main函数

2025/9/18 20:48:51 来源:https://blog.csdn.net/2403_88805387/article/details/144416892  浏览:    关键词:C语言:main函数

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);
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词