初识
.h:头文件
.c:源文件,一个工程可有多个
main:主函数,程序入口,一个工程仅一个
sizeof:计算类型或变量所占空间大小,单位为byte字节
printf:库函数,在屏幕上打印信息;使用需引用头文件<stdio.h>
%d:打印一个整数
scanf:输入函数
单位
byte(字节)=8bit(比特)
kb=1024byte
mb=1024kb
gb=1024mb
tb=1024gb
pb=1024tb
数据类型
char:字符数据
short:短整型
int:整型
long:长整型
long long:长长整型
float:单精度浮点数
double:双精度浮点数
变量分类
全局变量
{}外部定义
局部变量
{}内部定义,作用域为变量所在的局部范围
冲突时,局部优先,但建议内外定义不同
常量
字面常量
3.14
1000
const修饰的常变量
具有常属性,不能被改变
const float pai=3.14f
#define定义的标识符常量
#define MAX 10000
枚举常量
枚举关键词:enum
可以一一列举的常量
MALE,FEMALE,SECRET
枚举常量是常量,值默认从0开始
字符串
""引起的一串字符
结束标志为\0的转义字符,不算作内容,一般隐藏了
字符数组:数组是一组形同类型的元素
转义字符
\?书写连续多个?使用,防止被解析成三字母词,如??)会被解析成】
\'字符常量
\"一个字符串内部的双引号
\\一个反斜杠,防止被解释为转义序列符
\a警告字符,蜂鸣
\b退格符
\f进纸符
\n换行
\r回车
\t水平制表符
\v垂直制表符
\ddd:1到3个八进制数,如\130X(X为ACSII码的88)
\xdd:2个十六进制数,如\x300
关键字
C语言提供的,不能自己创建关键字
关键字不能做变量名
注意区分预处理指令,如define,include
常见
auto自动变量,自动创建,自动销毁,修饰局部变量,一般省略
break在循环语句,switch语句中
case在switch语句中
char字符类型
const变量
continue继续
default默认
do在while语句中
double双精度
else语句
enum枚举
extern声明外部符号
float单精度
for语句
goto语句
if语句
int输入
long长整型
register寄存器关键字
return常见return 0;结束语句
short短整型
signed有符号
sizeof计算字符大小
static静态的,可修饰全局(被修饰的全局只能在自己这个源文件.c内使用)、局部(改变了局部变量的生命周期,本质改变了存储类型)、函数
struct结构体
switch语句
typedef类型定义
union联合体,也叫共用体
unsigned无符号,unsigned int=u_int
void空
volatile高段位词,后续补充
预处理指令
define
include
常量和宏
#define定义常量标识符
#define MAX=10000
#define定义宏 注意二者区别
#define ADD(x,y)
如果printf("%d",4*ADD),会输出4x+y
#define ADD((x)+(y))
如果printf("%d",4*ADD),会输出4(x+y)
工程
初识
#include <stdio.h>
int main()
{
printf("再见");
return 0;
}
变量(局部)
#include <stdio.h>
int main()
{
int a=10;
printf("%d\n",a);
return 0;
}
求和
%d:整数
&a:存放a的数据
\n:换行
输入两个数字时按照程序的格式写%d %d两个数中间空一格
#include <stdio.h>
int main()
{
int a=0;
int b=0;
int sum=0;
scanf("%d %d",&a,&b);
sum=a+b;
printf("sum=%d\n",sum);
return 0;
}
常量
const修饰的常变量
以下为错误示范
#include <stdio.h>
int main()
{
const int num=10//num就是常变量,具有常属性,不能被改变
num=20;
printf("num=%d\n",num);
return 0;
}
arr[10]={0}表示10个元素
#include <stdio.h>
int main()
{
int arr[10]={0};
const int n=10;
int arr2[n]={0};//n是变量,这里不行
return 0;
}
#define定义的标识符常量
#include <stdio.h>
#define MAX 10000
int main()
{
int n=MAX;
printf("n=%d\n",n);
return 0;
}
枚举常量
结果为012
#include <stdio.h>
enum Sex
{
MALE,
FEMALE,
SECRET
};
int main()
{
enum Sex s=MALE;
printf("%d\n",MALE);
printf("%d\n",FEMALE);
printf("%d\n",SECRET);
return 0;
}
字符串
以下为验证\0是结束标志的办法
法一
arr1和arr2结果不同,arr2输出结果abc后有乱码,除非给arr2里加个'\0'
#include <stdio.h>
int main()
{
char arr[]="hello";
char arr1[]="abc";
char arr2[]={'a','b','c'};
printf("%s\n",arr1);
printf("%s\n",arr2);
return 0;
}
法二
求字符长度
include <string.h>是strlen所需要的头文件
#include <stdio.h>
#include <string.h>
int main()
{
char arr[]="hello";
char arr1[]="abc";
char arr2[]={'a','b','c'};
int len=strlen("abc");
printf("%d\n",len);
return 0;
}
或这样
#include <stdio.h>
#include <string.h>
int main()
{
char arr[]="hello";
char arr1[]="abc";
char arr2[]={'a','b','c'};
printf("%d\n",strlen(arr1));
printf("%d\n",strlen(arr2));
return 0;
}
转义字符
计算8进制的130是10进制的多少呢
计算结果为X——ASCII码是88
#include<stdio.h>
int main()
{
printf("%c\n",'\130');
return 0;
}
关键字
typedef类型重定义
#include<stdio.h>
typedef unsigned int u_int;
int main()
{
unsigned int num=100;
u_int num2=100;
printf("%d\n",num);
return 0;
}
void例子
#include<stdio.h>
void test()
{
int a =1;
a++;
printf("%d\n",a);
}
int main()
{
int i=0;
while(i<10)
{
test();
i++;
}
return 0;
}