嵌入式(c)

递归函数思

fibonacci函数的递归思想

-------------------------------------------------------------------------------------------------------------------

递归函数例题

 阶乘的递归

 数组的性质

 

二维数组的性质

#include <stdio.h>
/*
数组中:
1.取地址符:&
2.取值符号:*(指针法)
3.取值符号:[](下标法) 
	int arr[3] ={1,2,3};
	arr[0] = 1  ---> *arr
	arr[1] = 2  ---> *(arr+1)
	arr[2] = 3  ---> *(arr + 2)
*/
/*
一维数组的数组名含义:首元素的地址  (地址操作空间为一个元素)
二维数组的数组名含义:首行元素的地址(地址操作空间为一行)
*/
int main(void)
{
	int arr[3][4] = { 10,20,30,40,50,60,70,80,90,100,110,120 };
	printf("arr[0][0] =%d\n",arr[0][0]); //第0行第0列元素的值
	printf("arr = %p\n",arr);  //首行元素的行地址
	printf("*arr = %p\n",*arr); //第一行第一列元素的地址
	printf("arr[1] =%p\n",arr[1]); //*(arr+1) //第二行第一个元素的地址
	printf("&arr = %p\n",&arr); //&arr表示的是整个二维数组的地址

	printf("------------------------------------------\n");
	printf("arr[0][0]+1 =%d\n", arr[0][0]+1); //第0行第0列元素的值
	printf("arr+1 = %p\n", arr+1);  //首行元素的行地址
	printf("*arr+1 = %p\n", *arr+1); //第一行第一列元素的地址
	printf("arr[1]+1 =%p\n", arr[1]+1); //*(arr+1) //第二行第一个元素的地址
	printf("&arr+1 = %p\n", &arr+1); //&arr表示的是整个二维数组的地址

/*
二维数组的遍历:
*/
#if 0
	int count = 0;
	for (int i = 0; i < 12; i++)
	{
		count++;
		if (count == 5)
		{
			putchar(10);
			count = 1;
		}
		printf("%-5d", *(*arr+i));  //指针法
		
	}
#endif
	for(int i = 0 ; i < sizeof(arr)/sizeof(arr[0]); i++)
	{
		for (int j = 0; j < 4; j++)
		{
			//printf("%-5d",arr[i][j]); //下标法
			printf("%-5d", *(*(arr + i)+j)); //指针法
		}
		putchar(10);
	}
	return 0;
}

 二维数组的基本使用

#include <stdio.h>
/*
二维数组:
存储类型 数据类型 数组名[行数][列数];
例如:
	int arr[3][4]; 
	定义一个名为arr的3行4列的二维数组,一共12个元素,每个元素是int类型
*/
int main(void)
{
	/*
	二维数组的初始化:
	*/
	//全部初始化
	//int arr[3][4] = { 10,20,30,40,50,60,70,80,90,100,110,120 };
	//int arr[3][4] = { { 10,20,30,40},{50,60,70,80},{90,100,110,120} };
	//局部初始化,按列存储,未初始化的部分,全部写成0
	//int arr[3][4] = { 10,20,30,40,50,60,70,80 };
	//int arr[3][4] = { { 1,2,3},{5,6,7},{9,10,11} };
	//下列二维数组中:{}表示行,[]中表示列数
	//int arr[3][4] = { {[1] = 1,[2] =2,[3] =3},{ [0] = 5,[1] = 6,[3] = 7},{ [0] = 8,[1] = 9,[2] = 10}};
	//int arr[3][4] = { [0] [0] = 1,[1][1] = 2,[2][2] = 3 };
	//按列存储,行号可以缺省
	int arr[][4] = { 1,2,3,4,5,6,7,8,9,0,1,2,3,1,2,3,4,5,6,7,8,9,0,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0 };
	//int arr[3][] = { 10,20,30,40,50,60,70,80,90 };(错误,列数不能省)
	printf("sizeof(arr) = %lld\n",sizeof(int[3][4]));
	int row = sizeof(arr) / sizeof(arr[0]);  //整个二维数组的大小/一行的大小 = 行数
/*
二维数组的遍历:
*/
#if 1
	for (int i = 0; i < row; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			printf("%-5d",arr[i][j]);
		}
		putchar(10);
	}
#endif

/*
	for (int i = 0; i < 12; i++)
	{
		printf("%-5d",arr);
	}
*/

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值