C 数组 函数

目录

一、数组

1、一维数组

2、二维数组 

3、数组的有趣玩法

二、函数

1、库函数

2、自定义函数 

3、static 和 extern


一、数组

1、一维数组

(1)数组的类型

数组算是一种自定义类型,去掉数组名留下的就是数组的类型。

int arr1[10]    //arr1 数组的类型是 int[10]

char arr2[5]    //arr2 数组的类型是 char[5]

(2)sizeof计算数组元素个数

sizeof 是一个关键字,可以计算类型或者变量大小的,其实也可以计算数组的大小。计算的是数组所占内存空间的总大小,单位是字节。

//VS2022 x64
#include<stdio.h>
int main()
{
	int arr[5] = { 1,2,3,4,5 };
	printf("%d\n", sizeof(arr[0]));		//输出 4 ,因为数组元素是 int类型
	
	printf("%d\n", sizeof(arr));		//输出 20,因为数组里有5个int类型的元素
	
	int sz = sizeof(arr) / sizeof(arr[0]);
	printf("%d\n", sz);		//输出 5,该数组有5个元素
	return 0;
}

2、二维数组 

(1)二维数组初始化时能省略行,但不能省略列;

(2)C99中给一个变长数组(variable-length array,简称 VLA)的新特性,允许我们可以使用变量指定数组大小,但在VS2022上不支持变长数组。


3、数组的有趣玩法

多个字符从两端移动,向中间汇聚

#include<stdio.h>
#include<windows.h>		//使用Sleep()和system()需要加的头文件
int main()
{
	char arr1[] = "hello_world!!!";
	char arr2[] = "**************";
	int sz = sizeof(arr1) / sizeof(arr1[0]);	//计算出的长度是16,
												//因为字符串尾部会系统添加一个\0
	int right = sz - 1 - 1;		//第一个减一是减去字符\0;
								//第二个减一是因为数组的下标从0开始
	int left = 0;
	while(left <= right)
	{
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];
		system("cls");		//系统命令,控制台清屏
		printf("%s", arr2);
		Sleep(1000);		//休眠1000ms
		left++;
		right--;
	}
	return 0;
}

二、函数

1、库函数

库函数的学习和查看工具很多,比如:

C/C++官方的链接:https://zh.cppreference.com/w/c/header

cplusplus.com:https://legacy.cplusplus.com/reference/clibrary/


2、自定义函数 

(1)数组传参的几个重点知识:

  • 函数的形式参数要和函数的实参个数匹配
  • 函数的实参是数组,形参也是可以写成数组形式的
  • 形参如果是一维数组,数组大小可以省略不写
  • 形参如果是二维数组,行可以省略,但是列不能省略
  • 数组传参,形参是不会创建新的数组的
  • 形参操作的数组和实参的数组是同一个数组

(2)嵌套调用 就是函数之间的互相调用。

(3)链式访问 就是将一个函数的返回值作为另外一个函数的参数。

(4)printf 函数返回的是打印在屏幕上的字符的个数。

//VS2022 x64
#include<stdio.h>
int main()
{
	printf("%d", printf("%d", printf("%d", 33)));	//输出3321
	return 0;
}

第三个 printf 打印33,在屏幕上打印2个数字,再返回 2 ;

第二个 printf 打印 2 ,在屏幕上打印1个数字,再放回 1 ;

第一个 printf 打印 1 ,结束。

(5)函数的调用一定要满足,先声明后使用;

  • 函数的定义也是一种特殊的声明,所以如果函数定义放在调用之前也是可以的。

(6)在代码量很大的情况下,一般是

  • 函数的声明、类型的声明放在头文件(.h)中,
  • 函数的实现是放在源文件(.c)文件中。

3、static 和 extern

(1)staticextern 都是C语言中的关键字。

(2)extern 是用来声明外部符号的。 

如果一个全局的符号在 A文件 中定义的,在 B文件 中就可以使用 extern 进行声明,然后使用。

(5)static 的用处:

  •   修饰局部变量,会改变局部变量的生命周期,只有程序结束,变量才销毁,内存才回收。但是作用域不变。
  •   修饰全局变量,被 static 修饰,这个全局变量只能在本文件内使用,不能在其他文件内使用。
  •   修饰函数,与修饰全局变量一样。

(3)作用域

  • 局部变量的作用域是变量所在的局部范围。
  • 全局变量的作用域是整个工程(项目)。

(4)生命周期

  • 局部变量的生命周期是:进入作用域变量创建,生命周期开始,出作用域生命周期结束。
  • 全局变量的生命周期是:整个程序的生命周期。 

(6)变量在内存中的存储


完 

  • 32
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值