基本结构
#include<stdio.h>
int main()
{
/*在双引号中间输入Hello World*/
printf("Hello World");
return 0;
}
末尾需要有分号
注释
多行注释: /* 注释内容 */
单行注释: //注释一行
标识符的长度最好不要超过8位
不允许连续赋值,如int a=b=c=5;是不合法的。
数据类型
char int float double
int,short int, long int, unsigned int…
long double…
常量
#define 标识符 常量值
强制类型转换
(数据类型) (表达式)
- 数据类型和表达式都必须加括号, 如把(int)(x/2+y)写成(int)x/2+y则成了把x转换成int型之后再除2再与y相加了。
- 转换后不会改变原数据的类型及变量值,只在本次运算中临时性转换。
- 强制转换后的运算结果不遵循四舍五入原则。
运算
int除int,结果也为整数(直接忽略小数部分)
只能两个整数之间取余%,运算后的符号取决于被模数的符号,如(-10)%3 = -1;而10%(-3) = 1;
与运算&&
或运算||
三目运算符
表达式1 ? 表达式2 : 表达式3;
先判断表达式1的值是否为真,如果是真的话执行表达式2;如果是假的话执行表达式3。
控制语句
if(表达式)
{
}
else
{
}
switch(变量){
case 变量值:
break;
default:
}
while()
{
}
do
{
}while()
//区别:至少保证执行一次循环,在循环尾部才检查条件
for(init; condition; increment )
{
}
break //终止整个循环or switch,不能单独用在if else里
在多层循环中,一个break语句只跳出当前循环
continue //仅停止本次循环
无限循环
for(;;)
数组
连续内存
double a[3] = {1.0,2.1,3.4};
int length = sizeof(a)/sizeof(a[0]);
定义局部变量时要记得初始化
多维数组
int a[3][4];
指针
&var取地址
type *p;
p=&var
//p=var的地址,*p=var的值
要习惯为指针赋值NULL
int *p = NULL;
指针数组
int *ptr[MAX];
每个 元素都是一个指向int的指针
指针运算
- 指针的每一次递增,它其实会指向下一个元素的存储单元。
- 指针的每一次递减,它都会指向前一个元素的存储单元。
- 指针在递增和递减时跳跃的字节数取决于指针所指向变量数据类型长度,比如 int 就是 4 个字节