关于注释
/*为早期c语言的注释风格,缺点是不能嵌套注释,因为编译器只识别第一个/*和最后一个*/*/
//为c++注释风格,在c现在的标准中也可使用
关于循环
简单的while循环
#include<stdio.h>
int main()
{ int line = 0;
while (line <= 2000)
{
line++;
printf("加油\n");
}
if (line > 2000)
{
printf("succeed\n");
}
return 0;
}
关于函数
函数的特点为简化代码,提高复用率
主要结构为:返回值类型 函数名(形参)
简单的求和函数sum()
#include <stdio.h>
int sum(int a)
{
int c = 0;
static int b = 3;
c += 1;
b += 2;
return (a + b + c);
}
int main()
{
int i;
int a = 2;
for (i = 0; i < 5; i++)
{
printf("%d, ", sum(a));
}
关于数组
注意:数组名[数组长度] 数组长度必须为常量
初始化时,1.只定义长度,不赋值则全为随机值。
2.只定义长度,赋值一部分时,剩下的自动赋值为0.
3.不定义长度,按赋值的个数定义长度.
输出数组
#include <stdio.h>
int main()
{
int i = 0;
int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };
for (int i = 0; i < 10; i++)
{
printf("%d", arr[i]);
}
printf("\n");
return 0;
}
关于操作符
算数操作符:注意 除/ 和取余(取模)%
移位操作符:左移右移
位操作符:& | 按位异或
赋值操作符:复合赋值符
单目操作符:sizeof()计算字节个数计算时需取‘\0’。
*间接访问操作符(解引用操作符)
(类型)强制类型转换
~按位取反
关系操作符:< ,>,<=, >=, !=, ==.
逻辑操作符:逻辑与 &&逻辑或||
条件操作符: exp1?exp2:exp31为真则输出2,否则输出3
逗号表达式:从左往右,输出结果为最末的值
关于常见关键字
typedef unsigned int uint_32
static 修饰局部变量>静态局部变量:改变了变量的生命周期(下次调用该变量时,该变量上一次的值不销毁)
修饰全局变量>静态全局变量:该变量只能在该.c文件内使用,改变作用域。
修饰函数>静态函数:该函数只能在该.c文件内使用,改变作用域。
define 定义常量和宏
define max 100
define add(x,y) (x+y)
关于指针
内存最小单位为内存单元,每个内存单元的大小为1个字节,每个内存单元的编号为该单元的地址。
指针与地址使用例子
#include<stdio.h>
int main()
{
int num = 10;
int* p = #
*p = 20;
printf("%d\n", num);
return 0;
}
栈区:局部变量 形式参数
堆区:动态内存分配 malloc calloc realloc free
静态区:全局变量 静态变量
指针变量大小在32位平台为4个字节,64位平台位8个字节
可用以下实例查看
#include<stdio.h>
int main()
{
printf("%d\n", sizeof(char *));
printf("%d\n", sizeof(short *));
printf("%d\n", sizeof(int *));
printf("%d\n", sizeof(double *));
return 0;
}
关于结构体
#include <stdio.h>
int main()
{
struct stu
{
char name[20];
int age;
char sex[5];
char id[15];
};
struct stu s ={"zhangsan", 20,"male","15040514100"};
//.为结构成员访问操作符
printf("name= %s age= %d sex= %s id= %s\n", s.name, s.age, s.sex, s.id);
struct stu *ps = &s;
//->操作符
printf("name= %s age= %d sex= %s id= %s\n", ps->name, ps->age, ps->sex, ps->id);
return 0;
}