初识C语言(3)-创新互联

1、数组

数组:一组相同类型元素的集合

10年积累的成都做网站、成都网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先做网站设计后付款的网站建设流程,更有洪泽免费网站建设让你可以放心的选择与我们合作。
1、数组的定义

3种定义数组的方式:
1、数据类型 数组名 [ 数组长度 ];
2、数据类型 数组名 [ 数据长度 ] = {值1,值2,值3…};
3、数据类型 数组名 [ ] = {值1,值2,值3…};

定义一个整型数组
int arr1 [5];
int arr2 [5] = {10,20,30,40,50 }; //若初始赋值没赋全,系统默认补0
int arr3 [] = {90,80,70,60,50,40,30,20,10 }; //在有赋值的情况下,若不写数组长度,系统会自动根据所赋值的个数计算出数组长度

注:数组 arr [ X ],X必须为常量,不能是变量!

2、数组下标

C语言规定:数组的每个元素都有一个下标,下标是从0开始的

int arr[10] = {0};
//如果数组有10个元素,下标的范围是 0 ~ 9

在这里插入图片描述

3、数组的使用
//数组一般搭配循环使用
#includeint main()
{int i = 0;
 int arr[10]; //定义一个整型数组
 
 for(i=0; i<10; i++) //输入数组
 {scanf("%d", &arr[i]);
 }
 
 for(i=0; i<10; i++) //输出数组
 {printf("%d ", arr[i]);
 }  
    return 0;
}
4、数组的长度
#define _CRT_SECURE_NO_WARNINGS 1
#include#includeint main()
{//字符串数组:
	char arr[] = "abcdef";
	printf("%d\n", strlen(arr)); //6
	printf("%d\n", sizeof(arr)); //7
	printf("%d\n", sizeof(arr) / sizeof(arr[0])); //7
	
    //整型数组
	int arr1[] = {1,2,3,4,5,6 };
	printf("%d", sizeof(arr1) / sizeof(arr1[0])); //6
	
	return 0;
}

注:用 sizeof 算字符串数组长度,会把字符串末尾的 /0 也算作一个数组元素

2、操作符

(1)算术操作符
+ - * / %
(2)移位操作符(移动的是二进制位)
>><<
(3)位操作符(操作的是二进制位)
& ^ |
(4)赋值操作符
= += -= *= /= &= ^= |= >>=<<=
(5)单目操作符
在这里插入图片描述
(6)关系操作符
在这里插入图片描述
(7)逻辑操作符
在这里插入图片描述
(8)条件操作符(三目运算符)
exp1 ? exp2 : exp3
(9)逗号表达式
exp1, exp2, exp3, …expN
(10)下标引用、函数调用和结构成员
[] () . ->

三目运算符:
 m = (a >b ? a : b);
 
// 等价于:
// if (a >b)
//	 m = a;
// else
//	 m = b;
逗号表达式:
int main()
{int a = 3;
	int b = 5;
	int c = 0;
	int d = (a+=3,b-=a,c=a+b,c-2);
	//        6    -1    5    3 
	
	printf("%d\n", d); //3
	return 0;
}

注:逗号表达式会从左向右依次计算,整个表达式的结果,是最后一个表达式的结果。

3、常见关键字

在这里插入图片描述

signed 【 有符号的(10 \ -20…)】
unsigned ( 无符号的 )
unsigned int a = 50;
union ( 联合体 / 共用体 )
void ( 无 / 空 )
auto ( 自动的 - 每个局部变量都是auto修饰的 )
auto int b = 10; // auto一般自动省略
register( 寄存器关键字 )
register int c = 100; //建议num的值存放在寄存器里

typedef ( 类型重定义 )

typedef unsigned int u_int; //将 unsigned int 重命名为 u_int

	unsigned int a = 100;
	u_int b = 500;

	printf("a = %d\n", a); //100
	printf("b = %d\n", b); //500

static ( 静态的变量 )

在这里插入图片描述

1、static修饰局部变量
void test()
{int a = 5;
	static int b = 5; //static 修饰
	a++;
	b++;
	
	printf("%d ", a); // 6 6 6 6 6 6 6 6 6 6 
	printf("%d ", b); // 6 7 8 9 10 11 12 13 14 15
}

int main()
{int i = 0;
	while (i< 10)
	{test();
    	i++;
	}
	return 0;
}
  • static修饰局部变量【改变了局部变量的生命周期,(本质上改变了变量的存储类型)】
  • 【本来局部变量是放在栈区的,被static修饰后存成在内存的静态区了,因为存储类型的 >改变,从而导致生命周期变长。但是:不影响作用域】
  • 让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束。

在这里插入图片描述

2、static修饰全局变量
  • static修饰全局变量【使得这个全局变量只能在自己所在的源文件中使用,其他源文件不能使用,不能用extern调用】
  • 【全局变量在其他源文件可以被使用,是因为全局变量具有外部连接性】
  • 【但是被static修饰之后,就变成了内部连接性,其他文件不能连接到这个静态的全局变量】

在这里插入图片描述

3、static修饰函数
  • static修饰函数【使得这个函数只能在自己所在的源文件中使用,其他源文件不能使用,不能用extern调用】
  • 【全局函数在其他源文件可以被使用,是因为全局函数具有外部连接性】
  • 【但是被static修饰之后,就变成了内部连接性,其他文件不能连接到这个静态的全局函数】

在这里插入图片描述

4、define定义常量和宏
#include//define定义的标识符常量(没有 = 号)
#define MAX 1000

//define定义的宏 - 有参数
#define ADD(x, y) ((x)+(y))

//int ADD(int x, int y)
//{//	return x + y;
//}

int main()
{int sum = ADD(2, 3);
    printf("sum = %d\n", sum); // 5
    
    sum = 10*ADD(2, 3);
    printf("sum = %d\n", sum); // 50
    
    return 0;
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网页名称:初识C语言(3)-创新互联
本文网址:http://hbruida.cn/article/ecepc.html