当前位置: 首页 > news >正文

(C语言)习题练习 sizeof 和 strlen

sizeof 

上习题,不知道大家发现与上一张的习题在哪里不一样嘛?

int main() 
{
	char arr[] = "abcdef";

	printf("%zd\n", sizeof(arr));
	printf("%zd\n", sizeof(arr + 0));
	printf("%zd\n", sizeof(*arr));
	printf("%zd\n", sizeof(arr[1]));
	printf("%zd\n", sizeof(&arr));
	printf("%zd\n", sizeof(&arr + 1));
	printf("%zd\n", sizeof(&arr[0] + 1));

	return 0;
}

对喽!

上一个是

char arr[]={'a','b','c','d','e'};

大家可以在计算一下,巩固知识点啦。 

欧克,上答案

如下:

1.  arr表示整个数,计算的是整个数组的大小单位字节,7*1 = 7

2. arr就是数组首元素地址,  arr+0还是数组首元素的地址  4  /  8(在不同环境下)

3. arr就是数组首元素的地址,*arr是首元素,大小就是1个字节

4. arr[1]数组的第二个元素,计算的就是第二个元素的大小,单位是字节 - 1

5.arr表示整个数组,&arr取出的是整个数组的地址,是地址大小就是  4  / 8个字节

6. &arr + 1是跳过这个数组后的地址,是地址大小就是 4 /  8个字节 

7. &arr[0]是数组首元素的地址,&arr[0]+1是数组第二个元素的地址:4  / 8 

strlen

习题与sizeof一样,在这里放一起更好的比较一下。

int main()
{	
char arr[] = "abcdef";
	printf("%zd\n", strlen(arr));

	printf("%zd\n", strlen(arr + 0));

	printf("%zd\n", strlen(*arr));
	
	printf("%zd\n", strlen(arr[1]));

	printf("%zd\n", strlen(&arr));


	printf("%zd\n", strlen(&arr + 1));

	printf("%zd\n", strlen(&arr[0] + 1)); 

	return 0;
}

答案公布:

1.  6: arr是数组首元素的地址,从第一个元素开始,统计\0之前字符的个数

2. 6:arr是数组首元素的地址,arr+0还是数组首元素的地址,结果同上

3.非法访问内存,导致程序崩溃

4.arr[1]是第二个元素 == 'b' == 98, 道理同上,非法访问内存,导致程序崩溃

5.6:&arr取出的是数组的地址,数组的地址和首元素的地址是同一个值

6. 随机值

7.5:&arr[0] + 1是第二个元素的地址,\0之前有5个元素

相关文章:

  • 虚拟机安装centos7
  • JVM 类加载器之间的层次关系,以及类加载的委托机制
  • 网络基础(一)
  • ultraiso制作u盘启动
  • 北单111 奥斯汀FC vs 圣地亚哥FC
  • 文件上传的小点总结(1)
  • 如何设置sudo权限
  • 创建线程的6种方式
  • Windows打开ftp局域网共享
  • 群体智能优化算法-蛾火焰优化算法(Moth-Flame Optimization Algorithm,含Matlab源代码)
  • AI比人脑更强,因为被植入思维模型【20】卡尼曼双系统理论
  • System.out与BufferedWriter
  • Gradle/Maven 本地仓库默认路径迁移 (减少系统磁盘占用)
  • 【AVRCP】AVRCP与BIP互操作性深度解析:封面艺术传输的技术实现
  • 在小米AX6000中添加tailscale monitor
  • LangChain调用自定义工具
  • 【读点论文】What’s Really New with NewSQL?
  • SEO关键词长尾词高效策略
  • redisson 使用与分析
  • C语言入门教程100讲(34)结构体初始化
  • 金融月评|尽早增强政策力度、调整施策点
  • 中方是否计划解除或调整稀土出口管制?外交部回应
  • 陈吉宁龚正黄莉新胡文容等在警示教育基地参观学习,出席深入贯彻中央八项规定精神学习教育交流会
  • 以军向也门3个港口的居民发布撤离令
  • 气候多米诺:厄尔尼诺与东南亚跨境害虫或威胁中国粮食安全
  • 第十届影像上海博览会落幕后,留给中国摄影收藏的三个问题