2. 在C语言编程中开始
一、介绍
C程序由1 | 多个称为函数的过程构成。
C提供广泛的、被集中存放在标准库的文件集中的函数集。
assert.h 诊断程序 | ctype.h 单个字符测试 | errno.h 错误检测 | float.h 浮点型界限 | limits.h 整数型界限 |
locale.h 区域定义 | math.h 数学 | stjump.h 非局部的函数调用 | signal.h 异常处理&中断信号 | stdarg.h 可变长度参数处理 |
stddef.h 系统常量 | stdio.h 输入/输出 | stdlib.h 多种功用函数 | string.h 字符串处理 | time.h 时间和日期函数 |
C的函数存在C语言标准库的头文件中。
比如函数
printf()
//在监视器上显示数据
存在标准库中一个叫
stdio.h
//因为printf()包含在stdio.h中,所以不用编写,只需要正确的调用calling
的头文件中。包含头文件使用
#include
//使已命名文件的内容,插入到#include命令出现的地方
#include <stdio.h>
//是一个预处理器命令,用一个#开始
//使stdio.h 插入到#include出现的地方
//头文件stdio.h给printf()提供一个适当的接口
int main()
//int 返回的数值类型,整型
//main 函数名
//() 一个空参数表
//{} 中叫函数体
{
float radius, circumference;
radius = 2.0;
circumference = 2.0 * 3.1415926 * radius;
printf("the circumference is %f\n", circumference); //调用calling printf()
return 0; //通过把控制返回给操作系统,完成main()函数内的处理
}
标识符
C中3种标识符,
保留字reserved word,也叫关键字keyword。是为了特定用途,预先定义的一个字。不能重定义。
完整的C关键字列表:
auto | default | float | register | struct | volatile |
break | do | for | return | switch | while |
case | double | goto | short | typedef | |
char | else | if | signed | union | |
const | enum | int | sizeof | unsigned | |
continue | extern | long | static | void |
标准标识符,C中预先定义的字。可以重新定义。
一些标准标识符:
abs | fopen | isalpah | rand | strcpy |
argc | free | malloc | rewind | strlen |
argv | fseex | memcpy | scanf | tolower |
calloc | gets | printf | sin | toupper |
fclose | isacii | puts | strcat | ungetc |
程序员建立的标识符
规则:
1 首字母,必须,字母 | 下划线。
2 首字母后,必须是数字、字母、下划线。
3 不许有空格。
4 不可以是保留字。
一般建立规则:第一个词小写,后面每一个词第一个字母大写
比如:helloWorld, welcomeToCLanguage
C的函数名称必须总被一对()跟随。比如 main() printf()
() 给函数提供一个可以将信息传递到函数的“漏斗”
通过()传递到函数的项目叫的参数
主函数 main()
reserved word 保留字 main 告诉计算机开始执行程序的地方
(驱动)函数 main() 告诉其他函数将要操作的顺序
一个C程序必须包含1个且唯一1个main()
int main()
void main()
//如果函数在完成之前不反回任何数值
把数据或消息输入给一个函数叫:pass data to the function
可执行语句,必须用 ; 终止
不可执行语句,在程序执行时不引起计算机执行任何语句。比如 函数首部行(定义一个函数的开始) | 注释
注释行
//
注释块
/*
*/
#include <stdio.h>
int main()
{
printf("Hello, World");
return 0;
}
调用(calling)函数
上面main()开始第一条语句printf()的执行,并将一个参数("Hello, World",这个是“消息”,消息在C中叫字符串string,开头结尾都要用“ " ”)传递给printf(),这个形式称为调用函数。
换行转义序列符 \n
“\”改变跟随它的字符的含义,给这个字符从正常到一个“转义”
三、数据类型
C内置数据类型,
整数类型 | 浮点型 |
---|---|
+, -, *, / | +, -, *, / |
% (模运算,返回余数), =, ==, != | =, ==, != |
<=, >=, sizeof() (数据类型、表达式长度) | <=, >=, sizeof() |
位运算 (&, |, ^异或, 按位取反(1001=0110), <<左移, >>右移) |
*sizeof(): 显示编译器为每种数据类型提供的存储器数量。
1 整型数据类型
C中有7内置整形数据类型,差别是,使用存储器的数量
char | short int | int | long int | unsigned short int | unsigned int | unsigned long int |
用于存储单个字符 | 支持的数值集是全部整数 | |||||
-2147483648 +2147483648 |
ASCII中,Bin的and是011000010110111001100100
int
char
escape sequence/character 转义序列符号
\n 换行转义序列符
2 浮点数据类型 实数(小数点)
C中支持3种,差别是,使用存储器的数量
float 浮点型 | double 双精度型 | long double 长双精度型 |
指数计数法
1625. | 1.625e3 |
.000625 | 6.25e-4 |
e后面是10的幂,小数点移动的位数。
四、算数运算
转换控制序列符(控制字符串)
%d | 按十进制,显示一个整数 |
%c | 显示一个字符 |
%f | 按小数点后有6位,显示一个浮点数 |
控制字符串,告诉printf(),显示数值是什么类型(d, c, f 叫转换字),在什么位置显示(%)
当printf()在字符串中遇到conversion control sequence(转换控制序列符)时,把下一个参数的值,带入这个conversion control sequence的位置
五、变量和声明
赋值语句" = "
a = 3, 把3赋值给a
声明语句
函数名称()
{
声明语句; //数据类型(dataType) 变量名(variableName)
其他语句;
}
#include <stdio.h>
int main()
{
float grade1, grade2, total, average;
grade1 = 85.5f;
grade2 = 97.0f;
total = grade1 + grade2;
average = total / 2.0;
printf("the average grade is %f", average);
return 0;
}
#include <stdio.h>
int main()
{
char ch;
ch = 'a'; //*单引号,将字母存入变量
printf("the initial character save to ch is %c\n", ch);
ch = 'm';
printf("then it changed to %c\n", ch);
return 0;
}
初始化
数据类型 变量名=初始值;
int i = 0
float pi = 3.14159
char a = 'a'
六、ex 温度转换
#include <stdio.h>
int main()
{
float celsius;
float fahrenheit;
printf("输入华氏温度:\n");
scanf("%f", &fahrenheit);
celsius = 5.0/9.0 * (fahrenheit - 32);
printf("华氏温度 %5.2f 对应的摄氏温度为 %5.2f\n", fahrenheit, celsius);
return 0;
}
七、补充 sizeof()
sizeof()用于确定编译器为任何数据类型|变量保留的字节数
//Xcode 7.3.1
#include <stdio.h>
int main()
{
printf("char 保留的存储器数量 %d\n", sizeof(char));//1
printf("short int 保留的存储器数量 %d\n", sizeof(short));//2
printf("int 保留的存储器数量 %d\n", sizeof(int));//4
printf("long int 保留的存储器数量 %d\n", sizeof(long));//8
printf("float 保留的存储器数量 %d\n", sizeof(float));//4
printf("double 保留的存储器数量 %d\n", sizeof(double));//8
printf("long double 保留的存储器数量 %d\n", sizeof(long double));//16
return 0;
}
地址
& 地址运算符,&variableName 意味着这个变量的地址
//Xcode 7.3.1
#include <stdio.h>
int main()
{
int num;
num = 22;
printf("num 的地址是:%d\n", &num);
return 0;
}