前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >嵌入式day6(2022.1.12)

嵌入式day6(2022.1.12)

作者头像
天天Lotay
发布2022-12-02 14:31:09
2570
发布2022-12-02 14:31:09
举报
文章被收录于专栏:嵌入式音视频
代码语言:javascript
复制
#include <stdio.h>

int main()
{
// int: 元素类型(数组中所有元素的相同类型)
// arr: 数组名(数组名就是首元素地址)
// [5]: 数组长度(元素个数)
//		----> 代表定义了5个int数据类型(5*4=20字节)
	// int arr[5];		// 如果未初始化,其中会是随机值
	// int arr[5] = {1, 2, 3, 4, 5};		//逐个初始化
	int arr[5] = {1, 2, 3};		// 如果只初始化某几个,剩余元素会被自动置0
	printf("size: %ld\n", sizeof(arr));

	printf("arr[0]: %d\n", arr[0]);	// 访问第0个元素(下标为0)
	printf("arr[1]: %d\n", arr[1]);	// 访问第1个元素(下标为1)
	printf("arr[2]: %d\n", arr[2]);	// 访问第2个元素(下标为2)
	printf("arr[3]: %d\n", arr[3]);	// 访问第3个元素(下标为3)
	printf("arr[4]: %d\n", arr[4]);	// 访问第4个元素(下标为4)
		// 下列访问属于<非法访问>(访问了未申请的内存)
	printf("arr[5]: %d\n", arr[5]);	// 访问第5个元素(下标为5)

	return 0;
}

代码语言:javascript
复制
#include <stdio.h>

// 显示数组所有元素
// void show_array(int len, int arr1[10]);
// void show_array(int len, int arr1[]);
// void show_array(int len, int a[len]);	// 变长数组
void show_array(int len, int *a);		// 指针类型

int main()
{
	// int arr1[10] = {[9]=666, [5]=888};	// 指定元素初始化
	int arr1[10] = {[0 ... 4]=666, [5 ... 9]=888};	// 元素批量初始化
	// int arr2[100] = {[0 ... 4]=666, [5 ... 9]=888};	// 元素批量初始化

	show_array(10, arr1);
	// show_array(100, arr2);

	arr1[9] = 123;

	show_array(10, arr1);

	return 0;
}

// 显示数组所有元素
// (无论何种类型写法,编译器最终都会以指针类型进行传递)
// void show_array(int len, int a[10])	// 数组原型
// void show_array(int len, int a[])	// 柔性数组
// void show_array(int len, int a[len])	// 变长数组
void show_array(int len, int *a)		// 指针类型
{
	int i;
	for(i=0; i<len; i++)
		printf("%d ", a[i]);
	printf("\n");
}
代码语言:javascript
复制
#include <stdio.h>

// 显示数组所有元素
// void show_array(int len, int arr1[10]);
// void show_array(int len, int arr1[]);
// void show_array(int len, int a[len]);	// 变长数组
void show_array(int len, int *a);		// 指针类型

int main()
{
// 柔性数组
	// int arr1[] = {1, 2, 3};	// 内存占用为12字节
	int arr1[] = {};			// 内存占用0字节

	// 下列操作为非法内存访问。
	arr1[0] = 123;		

	show_array(3, arr1);

	printf("size: %ld\n", sizeof(arr1));

// 变长数组
	int len;
	scanf("%d", &len);
	int arr2[len];

	return 0;
}

// 显示数组所有元素
// (无论何种类型写法,编译器最终都会以指针类型进行传递)
// void show_array(int len, int a[10])	// 数组原型
// void show_array(int len, int a[])	// 柔性数组
// void show_array(int len, int a[len])	// 变长数组
void show_array(int len, int *a)		// 指针类型
{
	int i;
	for(i=0; i<len; i++)
		printf("%d ", a[i]);
	printf("\n");
}
代码语言:javascript
复制
#include <stdio.h>

int main()
{
	// 一维数组
	int arr1[3] = {1, 2, 3};

	// 二维数组
	int arr2[2][3] = {1, 3, 5, 2, 4, 6};

	printf("%d\n", arr2[0][0]);	// 1

	printf("%d\n", arr2[0][1]); // 3

	printf("%d\n", arr2[1][0]); // 2
	

	return 0;
}
代码语言:javascript
复制
#include <stdio.h>

// 显示二维数组数据
// void show_2d_array(int line, int col, int a[5][10]);		// 数组原型
// void show_2d_array(int line, int col, int a[line][col]);	// 变长数组
// void show_2d_array(int line, int col, int a[][col])		// 柔性数组
void show_2d_array(int line, int col, int (*a)[col]);		// 指针类型

int main()
{
	int arr[5][10] = {
		[0][0 ... 9]=1, 
		[1][0 ... 9]=2,
		[2][0 ... 9]=3,
		[3][0 ... 9]=4,
		[4][0 ... 9]=5
	};

	show_2d_array(5, 10, arr);

	return 0;
}

// 显示二维数组数据
// void show_2d_array(int line, int col, int a[5][10])		// 数组原型
// void show_2d_array(int line, int col, int a[line][col])	// 变长数组
// void show_2d_array(int line, int col, int a[][col])		// 柔性数组
void show_2d_array(int line, int col, int (*a)[col])		// 指针类型 
{
	int i, j;
	for(j=0; j<line; j++)		// 行
	{
		for(i=0; i<col; i++)	// 列
			printf("%d ", a[j][i]);
		printf("\n");
	}
}
代码语言:javascript
复制
#include <stdio.h>

int main()
{
	int a = 100;
	int *p1 = &a;	
// 说法1:定义了指针类型p1,存储着变量a的地址
// 说法2:定义了指针指针p1,指向a

// 地址都是系统随机分配的。
	printf("%p\n", &a);		// 变量a的地址
	printf("%p\n", p1);		// 指针p1存储的地址
	printf("0x%lx\n", (unsigned long)p1);	// 指针p1存储的数据 

	printf("a: %d\n", a);

	char *p2;
	short *p3;
	double *p4;
	printf("%ld %ld %ld %ld\n", sizeof(p1), sizeof(p2), sizeof(p3), sizeof(p4));




	return 0;
}
代码语言:javascript
复制
#include <stdio.h>

int main()
{
	int arr1[5] = {1, 3, 5, 7, 9};

	printf("    数组名: %p\n", arr1);

	printf("首元素地址: %p\n", &arr1[0]);

	return 0;
}
代码语言:javascript
复制
#include <stdio.h>

int main()
{
	// & 取址符			 	通过变量获取其地址
	// * 取值符(解引用)	 通过地址获取其变量
	int a = 100;
	int *p1 = &a;

	printf("%d\n", *&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&a);
	printf("%d\n", *p1);

	// 指针的算术运算
	int arr[5] = {1, 3, 5, 7, 9};
	int *p2 = &arr[0];
	printf("1: %d\n", *p2);	// 打印数据: 1
	printf("p2  : %p\n", p2);

	printf("2: %d\n", *(p2+1));	// 打印数据: 3
	printf("p2+1: %p\n", p2+1);		// 向右偏移4字节(int *)

	char *p3 = (char *)&arr[0];
	printf("3: %d\n", *(p3+4));		// 打印数据: 3
	printf("p3+1: %p\n", p3+4);		// 向右偏移1字节(char *)

	return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-01-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档