栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【零天赋C语言】——指针和数组练习题详解

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【零天赋C语言】——指针和数组练习题详解

一、一维数组
#include
int main()
{
	//一维数组
	int a[] = { 1,2,3,4 };
	printf("%dn", sizeof(a));
	printf("%dn", sizeof(a + 0));
	printf("%dn", sizeof(*a));
	printf("%dn", sizeof(a + 1));
	printf("%dn", sizeof(a[1]));
	printf("%dn", sizeof(&a));
	printf("%dn", sizeof(*&a));
	printf("%dn", sizeof(&a + 1));
	printf("%dn", sizeof(&a[0]));
	printf("%dn", sizeof(&a[0] + 1));
	return 0;
}

解析:一维数组的数组名表示数组的首元素地址,但有两个例外:

    sizeof(数组名),数组名时表示整个数组,计算的是整个数组的大小。&+数组名,取出的是整个数组的地址。

sizeof是操作符 ,计算的是对象所占内存的大小——单位是字节

二、字符数组 1、
#include
int main()
{
	char arr[] = { 'a','b','c','d','e','f' };
	printf("%dn", sizeof(arr));
	printf("%dn", sizeof(arr + 0));
	printf("%dn", sizeof(*arr));
	printf("%dn", sizeof(arr[1]));
	printf("%dn", sizeof(&arr));
	printf("%dn", sizeof(&arr + 1));
	printf("%dn", sizeof(&arr[0] + 1));
	printf("%dn", strlen(arr));
	printf("%dn", strlen(arr + 0));
	printf("%dn", strlen(*arr));
	printf("%dn", strlen(arr[1]));
	printf("%dn", strlen(&arr));
	printf("%dn", strlen(&arr + 1));
	printf("%dn", strlen(&arr[0] + 1));
	return 0;
}

解析:strlen 是一个库函数,其作用是求一个字符串的长度,从字符串的首地址开始,向后依次查找,直到找到  ' ' 停止,长度就是 ' ' 之前出现的字符个数。

sizeof是操作符 ,计算的是对象所占内存的大小——单位是字节

2、
#include
int main()
{
	char arr[] = "abcdef";
	printf("%dn", sizeof(arr));
	printf("%dn", sizeof(arr + 0));
	printf("%dn", sizeof(*arr));
	printf("%dn", sizeof(arr[1]));
	printf("%dn", sizeof(&arr));
	printf("%dn", sizeof(&arr + 1));
	printf("%dn", sizeof(&arr[0] + 1));
	printf("%dn", strlen(arr));
	printf("%dn", strlen(arr + 0));
	printf("%dn", strlen(*arr));
	printf("%dn", strlen(arr[1]));
	printf("%dn", strlen(&arr));
	printf("%dn", strlen(&arr + 1));
	printf("%dn", strlen(&arr[0] + 1));
	return 0;
}

解析:

 

 

3、
#include
int main()
{
	char* p = "abcdef";
	printf("%dn", sizeof(p));
	printf("%dn", sizeof(p + 1));
	printf("%dn", sizeof(*p));
	printf("%dn", sizeof(p[0]));
	printf("%dn", sizeof(&p));
	printf("%dn", sizeof(&p + 1));
	printf("%dn", sizeof(&p[0] + 1));
	printf("%dn", strlen(p));
	printf("%dn", strlen(p + 1));
	printf("%dn", strlen(*p));
	printf("%dn", strlen(p[0]));
	printf("%dn", strlen(&p));
	printf("%dn", strlen(&p + 1));
	printf("%dn", strlen(&p[0] + 1));
	return 0;
}

解析:

 

三、二维数组
#include
int main()
{
	//二维数组
	int a[3][4] = { 0 };
	printf("%dn", sizeof(a));
	printf("%dn", sizeof(a[0][0]));
	printf("%dn", sizeof(a[0]));
	printf("%dn", sizeof(a[0] + 1));
	printf("%dn", sizeof(*(a[0] + 1)));
	printf("%dn", sizeof(a + 1));
	printf("%dn", sizeof(*(a + 1)));
	printf("%dn", sizeof(&a[0] + 1));
	printf("%dn", sizeof(*(&a[0] + 1)));
	printf("%dn", sizeof(*a));
	printf("%dn", sizeof(a[3]));
	return 0;
}

 解析:二维数组实质上是三个一维数组组成的

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/767268.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号