C语言入门11

本文详细介绍了C语言中二维数组的定义、初始化和遍历,包括全量初始化、部分初始化和零初始化的示例。同时,讲解了函数参数传递时二维数组的处理方式,并提供了相关代码示例。此外,还阐述了变量类型和作用域的概念,包括全局变量和局部变量的区别,以及变量定义和声明的注意事项。最后,简要提及了逗号表达式的使用规则。
摘要由CSDN通过智能技术生成

二维数组

格式: 类型符 数组名[行:常量表达式] [列:常量表达式]

注:数组名要符合标识符规则

​ 数组长度必须确定,即个数确定

​ 常量表达式不能是变量

初始化

  1. 定义时全部元素赋予初值
int array[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
  1. 定义时一部分元素赋予初值,其余系统自动给0
int array[3][4] = {{1},{5},{9}};
int array[3][4] = {{1},{0,6},{1,0,11}};
  1. 初始值全部赋予0
int array[3][4] = {0};
  1. 如果数组元素都赋予初值,数组第一维长度可以省略,由元素初值数量倒推
int array[][4] = {{1,2,3},{0},{5,6}};

函数传参

  1. 将一个数组作为实参传递给一个函数,主调函数只需要传递数组名和数组大小。
  2. 将一个数组作为形参时,形参定义数组名[ ] [ N ] 和数组行与列大小

语法规则:

  • 主调函数

    • 背调函数名(实参数组名,实参数组行大小,实参数组列大小)
  • 被调函数

    • 被调函数名(形参数组名[ ] [ N ],形参数组行,形参数组列)

数组遍历

#include<stdio.h>

int main()
{
	//二位数组的定义和初始化
	int arr[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
	int i,j,sum = 0;
	printf("请输入3*4的二维数组:\n");
	for(i = 0;i < 3;i++)
	{
		for(j = 0;j < 4;j++)
		{
			scanf("%d",&arr[i][j]);
		}
	} 
	//二维数组的打印
	for(i = 0;i < 3;i++)
	{
		for(j = 0;j < 4;j++)
		{
			printf("%d\t",arr[i][j]);
		}
		printf("\n");
	} 
	
	for(i = 0;i < 3;i++)
	{
		for(j = 0;j < 4;j++)
		{
			sum += arr[i][j];
		}
	}
	printf("ave = %d",sum/12);
	return 0;
}

逗号表达式

格式:(表达式1,表达式2,表达式3,…)

定义: 是C语言中的逗号运算符,优先级别最低,它将两个及其以上的式子连接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。

总体基本规则:

  1. 逗号表达式将两个及其以上的式子连接为一个表达式。
  2. 逗号表达式按照从左向右的顺序计算每个子表达式的值
  3. 逗号表达式的最后一个表达式必须有返回值,因为整个表达式的值是最后一个子表达式的值。其余表达式可以没有返回值。

例子

#include<stdio.h>

int main()
{
	int a;
	int i;
	a = (1,2,3);
	int brr[3] = {(1,2,3),0,0};
	for(i = 0; i < 3; i++)
	{
		printf("%d ",brr[i]);
	}
	printf("\n");
	printf("%d",a);
	return 0;
}

变量类型和作用域

定义变量4种情况

  • 在函数的开头定义
  • 在函数内定义
  • 在复合语句中定义
  • 在函数外部定义

全局变量和局部变量定义

全局变量:在函数之外定义的变量称为全局变量,全局变量可以为本文件中其他函数所共用,它的有效范围从定义变量开始到本文件结束。

注:如果在同一个源文件中,全局变量与局部变量同名,则在局部变量的作用范围内,全局变量被屏蔽,即它不起作用

局部变量: 在函数内部定义的变量称为局部变量,只能在本函数内部使用。

注:不同函数可以使用相同的局部变量名,它们代表不同的对象,互不干扰。一个函数的形参也为局部变量。在函数内部,复合语句也可以定义变量,这些变量也是局部变量,只在此复合语句中有效。

全局变量和局部变量区别

  1. 作用域不同: 全局变量的作用域为整个程序,而局部变量的作用域为当前函数或循环等
  2. 内存存储方式不同: 全局变量存储在全局数据区中,局部变量存储在栈区
  3. 生命周期不同: 全局变量的生命周期和主程序一样,随主程序的销毁而销毁,局部变量在

​ 函数内部或循环内部,随函数的退出或循环退出而销毁

  1. 使用方式不同: 全局变量在声明后程序的各个部分都可以用到,但是局部变量只能在局部使用。函数内部会优先使用局部变量再使用全局变量。

变量定义和声明

变量定义: 建立存储空间的声明叫定义

如:int a; //是定义,不是声明

变量声明: 前提是已经被定义过,声明只是扩展作用域

如:extern a; //是声明,不是定义

关键字extern,可以在一个文件中引用另一个文件中定义的变量或函数,用extern声明的变量不要初始化

内部函数和外部函数

  1. 外部函数: 可供其他文件调用的函数,函数定义时左端加上关键字extern,C语言规定定义函数省略extern,则默认是外部函数

注:其他文件可以调用,代码复用率高,其他文件调用时,需要加上关键字extern

  1. 内部函数: 如果一个函数只能被本文件中的其他函数所调用,就称其为内部函数,又称为静态函数,定义时需要在前面加上关键字static

注:大型程序分工编写时,各自编写自己的文件模块,不必担心其他文件模块中的同名函数导致冲突。

今日内容架构

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值