1.Hello,World代码分析
#include解释
#include <stdio.h>//#include预处理指令,编译器根据后面给出的文件名,来查找并把这个文件包含到当前文件中
//被包含的文件为xxx.h则是头文件,包含需要使用的函数的声明
//#include 可以包含任何编译器能识别的c/c++代码文件,
//如:c,hpp,cpp等,甚至,txt,abc等都可以
//<>包含的是系统自带的文件,“”是开发人员自己创建的文件(与编译器对文件的搜索顺序有关)
//C语言是面向过程的语言,一个C程序中一定且只能有一个main函数,是程序的入口
int main(int argc, const char * argv[])
{
// insert code here...
printf("Hello, World!\n");
return 0;
}
main函数解释
//C语言是面向过程的语言,一个C程序中一定且只能有一个main函数,是程序的入口
int main(int argc, const char * argv[])
{
// insert code here...
printf("Hello, World!\n");
return 0;
}
main()
{//可以不写参数和返回类型。如: main() 此时main默认范围值为int
// insert code here...
printf("Hello, World!\n");
return 0;
}
函数没有写返回值类型,并不代表函数没有返回值,而是表示返回值类型为int类型,void才代表函数没有返回值
不过,把main设置成void也可以运行,#C语言语法不是很严谨啊。
void main()
{//无返回值,照样可以运行
// insert code here...
printf("Hello, World!\n");
}
int main()
{//可以不写返回类型,即使定义了返回类型为int。
// insert code here...
printf("Hello, World!\n");
}
1.编写程序
2.编译 (检查语法是否有错误,编译成功时根据每个愿原程序文件名,生成目标文件.obj。有几个目标文件生成几个.obj)
3.链接 (将有关联的obj目标文件,以及系统提供的C函数组合在一起,生成可执行文件的过程)
4.运行
函数:
1.主函数 main()每个程序有且只有一个,C语言的入口,C程序总是从主函数开始执行。
2.开发人员自己定义的函数
3.C语言提供的库函数。
函数的声明和定义
标准c语言中,函数的定义顺序是必须要注意的,只有后面定义的函数能调用前面的函数,(xcode是包装过的,不会编译不通过。不过写的是偶会有警告)
#include <stdio.h>
int sum(int a,int b){
int c=a+b;
return c;
}
int main(int argc, const char * argv[])
{ // insert code here...
printf("c:%d\n",sum(3,4));
return 0;
}
以上没有问题
#include <stdio.h>
int main(int argc, const char * argv[])
{ // insert code here...
printf("c:%d\n",sum(3,4));//这句会被警告
return 0;
}
int sum(int a,int b){
int c=a+b;
return c;
}
以上会有警告
不想被顺序反省,可以在main函数前做一下函数声明
#include <stdio.h>
//以下2句为函数声
int sum(int,int);//简写
//int sum(int a,int b) //写全也可以
//声明函数只是让main知道有这个函数存在,至于函数有没有定义,会在函数链接时出错。
int main(int argc, const char * argv[])
{ // insert code here...
printf("c:%d\n",sum(3,4));//这句会被警告
return 0;
}
int sum(int a,int b){
int c=a+b;
return c;
}
在大型C程序中,为了分块惊醒开发,一般会将函数的声明和定义分别放在2个文件中。
函数声明放在.h的头文件中。函数定义放在.c源文件中。
sum.h
int sum(int,int);//简写
//int sum(int a,int b) //写全也可以
sum.c
int sum(int a,int b){
int c=a+b;
return c;
}
#include <stdio.h>
#include "sum.h"
int main(int argc, const char * argv[])
{ // insert code here...
printf("c:%d\n",sum(3,4));//这句会被警告
return 0;
}
不能直接在main.c中导入sum.c文件,会在链接时产生“标识符重复”
3.函数的型参和实际参数
定义函数时,函数名,后面,需要传入的变量时,型参,调用函数时,传入的变量时实参。
#include <stdio.h>
//定义函数时,设置的,a,b是型参
void sum(int a,int b){
b=5;
printf("b=%d:sum内部\n",b);
}
int main(int argc, const char * argv[])
{ // insert code here...
//调用函数时,传入的,2,3时实参
int a=5;
int b=6;
sum(a,b);
printf("b=%d:main中调用sum\n",b);
return 0;
}
b=5:sum内部
b=6:main中调用sum
基本数据类型传递给函数的时候是值传递。