1.数组
(1)定义数组不初始化
#include<stdio.h>
int main()
{
int arr1[10];//定义数组,不初始化里面的数的随机的
int i = 0;
while (i < 10)
{
printf("%d\n", arr1[i]);
i += 1;
}
return 0;
}
(2)定义数组初始化
#include<stdio.h>
int main()
{
int arr2[10] = {1,2,3,4,5};//定义数组初始化前5个,后面没给默认是0
int i = 0;
while (i < 10)
{
printf("%d\n", arr2[i]);
i += 1;
}
return 0;
}
(3)访问数组
#include<stdio.h>
int main()
{
int arr2[10] = { 1, 2, 3, 4, 5 };
printf("%d\n", arr2[0]);//数组的下标是从0开始的可以访问的位置是arr2[0]-arr2[9]
return 0;
}
总结:1.定义数组不初始化,里面的是随机的
2.定义数组初始化前n个,后面没给的默认是0
3.数组的下标是从0开始的 eg:数组arr[10]访问的位置是arr[0]-arr[9]
2.区分++i和i++
#include<stdio.h>
int main()
{
int i = 1;
int k = ++i;
i = 1;
int j = i++;
printf("k=%d\nj=%d\n", k, j);
return 0;
}
总结:++i : i先++表达式返回++之后的值
i++: 表达式返回++以前的值,i再++
3.关键字typedef
typedef int ab;
#include<stdio.h>
int main()
{
ab num = 1;
printf("num=%d\nab占%d个字节\n", num, sizeof(ab));
return 0;
}
注:typedef类型重定义(相当于给类型取别名)如上代码中的ab相当于int
4.关键字static
(1)修饰局部变量
改变局部变量的生命周期(变成了整个程序)但不改变局部变量的作用域
运行顺序:22行-23行-24行打印-22行-23行-24行打印-22行-23行-24行打印所以运行结果是三个1
运行顺序:22行-23行-24行打印-23行-24行打印-23行-24行打印,第一次运行完使用上一次结束的值,所以结果是一二三
注:static修饰局部变量,该变量不会随函数的结束而消失,并且只在第一次调用时进行初始化,后序调用该函数时,使用的都是上次结束前该变量的值。
(2)修饰全局变量
改变的是变量的可见性(只在定义的文件可以用)
如上图给j加上static编译不通过因为static改变全局变量的可见性(只能在当前文件用)j只能在当前文件用;
(3)修饰函数
改变函数的可见性(只在定义的文件可以用)
如上图用static修饰了函数sub后在另一个文件中sub不可用
总结:1.static修饰局部变量,改变局部变量的生命周期(变成了整个程序)但不改变局部变量的作用域;
2.修饰全局变量,改变的是变量的可见性(只在定义的文件可以用);
3.修饰函数,改变函数的可见性(只在定义的文件可以用);