C语言格式如下:
编译和执行过程:
1.编译
形成目标代码/文件。目标代码是编译器的输出结果,常见扩展名为“.o”或“.obj”。
2.连接
- 将目标代码跟c函数库相连接,并将源程序所用的库代码与目标代码合并。(例如:上面根据printf去stdio.h头文件中去查找)
- 形成最终可执行的二进制机器代码(可执行程序)
3.执行
在特定的机器环境下运行c应用程序,例如windows,linux
在此介绍c语言的一个特殊命令,就是如何获得用户输入值,如下所示:
int a;
printf("请输入数值\n");
//&是获取变量地址,通过这种方式就把输入值赋值给变量a了。
scanf(“%d”,&a);
同时关于long类型,c语言中占用4个字节,long long才是占用8字节,这点跟java不一样。在c语言中0代表假,1代表真。(可以通过sizeof(int)或sizeof(6)获取数据字节长度)
c语言中的随机数:
srand(time(null));
rand();//注意,在rand前要加上srand,否则相同的程序产生的随机每次执行是固定不变的,在执行这条语句的时候要引入:#include <time.h>
c语言中的数组:
c语言中的数组是占用一块连续空间内存的结构,数组名就是这块连续内存空间的首地址(即数组的第一个元素的地址),数组声明方式如下:
int nums[25];二位数组就是int num[10][25];
c语言中的常量定义:
#define N 50;//#define是宏定义,定义一个常量,常量还有一种定义方式:const int SIZE = 50;两者的区别是#define是宏定义,定义的时候没有确定常量类型,const定义的时候确定了常量类型,一般定义常量采用 const
c语言中的指针:
指针(pointer)简介:
指针是一个值为内存地址的 变量(或数据对象)。内存地址一般使用16进制表示,例如:0028FF44;示例如下:
int year = 2016;//year的地址是:0028FF44;
int * ptr_year = &year;地处就是将year的地址赋值给了ptr_year;可以将int * 理解为一种数据类型。指针基本用法示例如下(相同类型用相应类型的指针):
int * ptr_num;
char * ptr_name;
float * money_ptr;
double * p_price;
int * num = NULL;表示指针不指向任何地址。
获取指针的示例代码如下:
sprintf("指针地址是:%p",&num);%p是指针类型的占位符。
*ptr_num=1111;可以把指针对应空间的值修改掉。
一般指针不再使用的时候要将指针置为NULL:ptr_num=NULL;以免后续对别的数据产生影响。
数组与指针:
double sore[] = {1,2,3};
double * ptr_score = score;
int i;
for(i=0;i<3;i++){
printf(“数组值为:%.2lf”,*(ptr_score + i));//通过指针+i可以直接获取到下一个元素的地址;
}
有上面可以看出score就是数组的首元素地址,如果score+1就是第二个元素的地址(+1跨越的指针距离是与数组的类型的sizeof相等的)
二维数组的话,例如score就是score的首元素地址&score[0][0],使用指针访问二位数组可以用如下方式:*(a[1]+2)或者*(*(a+1)+2)
c语言中的函数(function):
规则:
内置函数:由c语言系统提供;需要在程序前包含定义函数的头文件
自定义函数:带参;不带参
常用的内置函数如下:
上面是内置函数举例,不是常用,重点介绍一个函数:malloc(n);//n是动态分配的字节数,示例如下:
int * nums;
nums = (int *)malloc(20);这样动态分配了一个20个字节的内存,相当于含有5个元素的int数组,用malloc比直接声明数组的优点是,有free(nums)函数,可以直接释放掉分配的内存。
还有一个与malloc等价的函数nums = calloc(5,sizeof(int));也可以直接free(nums)释放内存。calloc与malloc的区别是,malloc没有为数组元素赋初始值,calloc为每个元素赋初始值。
还有relloc是重新分配内存。