数组 ,区分++i和i++ ,关键词typedef,关键词static

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.修饰函数,改变函数的可见性(只在定义的文件可以用);

猜你喜欢

转载自blog.csdn.net/weixin_50886514/article/details/109902594