strlen和sizeof练习题(以64位机器为例)

news2025/2/22 21:05:40

例一

一般情况下,数组名表示首元素地址,只有在以下的情况中数组名表示整个数组的地址:

1.sizeof(数组名):这里的数组名表示整个数组,计算的是整个数组的大小

2.&数组名:这里的数组名表示整个数组,取出的是整个数组的地址。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int a[] = { 1,2,3,4 };
	printf("%d\n", sizeof(a));//a表示整个数组,注意不是整个数组的地址,也就是说不是一个指针变量,所以计算整个数组的大小,而不是指针的大小
	printf("%d\n", sizeof(a + 0));//这是下标为0的元素的地址,是个指针,所以是8(32位机器上是4)
	printf("%d\n", sizeof(*a));//拿到了a[0]这个元素,是int型
	printf("%d\n", sizeof(a + 1));//这是下标为1的元素的地址,是指针
	printf("%d\n", sizeof(a[1]));
	printf("%d\n", sizeof(&a));//这是整个数组的地址,是一个指针,所以是8.
    printf("%d\n",sizeof(*&a));//这是拿到了整个数组,所以是整个数组的大小
    printf("%d\n",sizeof(&a+1));//+1是跳过了一整个数组,但本质上还是指针
    printf("%d\n",sizeof(&a[0]));//地址,是指针
    printf("%d\n",sizeof(&a[0]+1));//下标为1的元素的地址,是指针
	return 0;
}

例二

char arr[] = {'a','b','c','d','e','f'};
printf("%d\n", sizeof(arr));
printf("%d\n", sizeof(arr+0));//下标为0的元素的地址
printf("%d\n", sizeof(*arr));//得到的是首元素
printf("%d\n", sizeof(arr[1]));//是下标为一的元素
printf("%d\n", sizeof(&arr));//是整个数组的地址,是指针
printf("%d\n", sizeof(&arr+1));//还是指针
printf("%d\n", sizeof(&arr[0]+1));//下标为1的元素的地址,是指针

例三

char arr[] = {'a','b','c','d','e','f'};
printf("%d\n", strlen(arr));//随机,因为不知道\0在哪里
printf("%d\n", strlen(arr+0));//同上
printf("%d\n", strlen(*arr));//参数有误,strlen的参数是地址
printf("%d\n", strlen(arr[1]));//同上
printf("%d\n", strlen(&arr));
printf("%d\n", strlen(&arr+1));
printf("%d\n", strlen(&arr[0]+1));//都不知道\0在哪里

例四

char arr[] = "abcdef";
printf("%d\n", sizeof(arr));//别忘了字符串末尾有\0
printf("%d\n", sizeof(arr+0));//首元素地址,指针
printf("%d\n", sizeof(*arr));//首元素
printf("%d\n", sizeof(arr[1]));
printf("%d\n", sizeof(&arr));
printf("%d\n", sizeof(&arr+1));
printf("%d\n", sizeof(&arr[0]+1));

注意,常量字符串末尾是\0,这是与字符数组的不同之处

例五

注意strlen的参数是地址,strlen遇到\0就停止计数

char arr[] = "abcdef";//字符串末尾有\0
printf("%d\n", strlen(arr));//传递的是首字符地址,所以从这个地址开始计算长度,直到遇到\0
printf("%d\n", strlen(arr+0));//还是首元素地址
printf("%d\n", strlen(*arr));//参数有误
printf("%d\n", strlen(arr[1]));//同上
printf("%d\n", strlen(&arr));//是整个数组的地址,但和首元素的地址是同一个地址
printf("%d\n", strlen(&arr+1));//是一个地址,跳过了一整个数组,所以是随机值
printf("%d\n", strlen(&arr[0]+1));//这是从第二个字符开始计算,所以是5

例六

注意&p加一表示跳过一个char*(指针变量)的大小,即跳过了8个字节

char *p = "abcdef";
printf("%d\n", sizeof(p));//指针变量的大小
printf("%d\n", sizeof(p+1));//字符b的地址
printf("%d\n", sizeof(*p));//字符a的大小
printf("%d\n", sizeof(p[0]));//同上
printf("%d\n", sizeof(&p));//指针p的地址,是二级指针
printf("%d\n", sizeof(&p+1));//还是地址
printf("%d\n", sizeof(&p[0]+1));//字符a的地址加1,得到字符b的地址

例七

char *p = "abcdef";
printf("%d\n", strlen(p));
printf("%d\n", strlen(p+1));//从b开始计算
printf("%d\n", strlen(*p));
printf("%d\n", strlen(p[0]));
printf("%d\n", strlen(&p));//其实是随机值,因为&p是p的地址,而不是a的地址,所以肯恰好从p所在地址开始往后6个字符恰好有一个\0
printf("%d\n", strlen(&p+1));
printf("%d\n", strlen(&p[0]+1));

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1253865.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

五种多目标优化算法(MOPSO、MOAHA、NSGA2、NSGA3、MOGWO)求解微电网多目标优化调度(MATLAB)

一、多目标优化算法简介 &#xff08;1&#xff09;多目标粒子群优化算法MOPSO 多目标应用&#xff1a;基于多目标粒子群优化算法MOPSO求解微电网多目标优化调度&#xff08;MATLAB代码&#xff09;-CSDN博客 &#xff08;2&#xff09;多目标人工蜂鸟算法&#xff08;MOAHA…

C语言进阶之笔试题详解(1)

引言&#xff1a; 对指针知识进行简单的回顾&#xff0c;然后再完成笔试题。 ✨ 猪巴戒&#xff1a;个人主页✨ 所属专栏&#xff1a;《C语言进阶》 &#x1f388;跟着猪巴戒&#xff0c;一起学习C语言&#x1f388; 目录 引言&#xff1a; 知识简单回顾 指针是什么 指针变…

分布式篇---第七篇

系列文章目录 文章目录 系列文章目录前言一、如何将长链接转换成短链接,并发送短信?二、长链接和短链接如何互相转换?三、长链接和短链接的对应关系如何存储?四、如何提高系统的并发能力?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一…

航天宏图——宏图1号样例数据0.5米-5米分辨率(上海部分)

简介&#xff1a; 作为航天宏图“女娲星座”建设计划的首发卫星&#xff0c;航天宏图-1号可获取0.5米-5米的分辨率影像&#xff0c;具备高精度地形测绘、高精度形变检测、高分辨率宽幅成像以及三维立体成像等能力&#xff0c;在自然资源、应急管理、水利等行业与领域具有极高的…

【开源】基于Vue和SpringBoot的数字化社区网格管理系统

项目编号&#xff1a; S 042 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S042&#xff0c;文末获取源码。} 项目编号&#xff1a;S042&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、开发背景四、系统展示五、核心源码5…

LCM-LoRA模型推理简明教程

潜在一致性模型 (LCM) 通常可以通过 2-4 个步骤生成高质量图像&#xff0c;从而可以在几乎实时的设置中使用扩散模型。 来自官方网站&#xff1a; LCM 只需 4,000 个训练步骤&#xff08;约 32 个 A100 GPU 小时&#xff09;即可从任何预训练的稳定扩散 (SD) 中提取出来&#…

【深度学习笔记】03 微积分与自动微分

03 微积分与自动微分 导数和微分导数解释的可视化偏导数梯度链式法则自动微分非标量变量的反向传播分离计算 导数和微分 假设我们有一个函数 f : R → R f: \mathbb{R} \rightarrow \mathbb{R} f:R→R&#xff0c;其输入和输出都是标量。 如果 f f f的导数存在&#xff0c;这个…

按需引入 ElMessage,没有样式且类型检查失败

文章目录 ElMessage 弹框没有样式问题描述解决方案 ts 类型检查失败问题描述解决办法 eslint 检查失败问题描述解决办法 ElMessage 弹框没有样式 问题描述 Element-plus 在使用 ElMessage 消息弹框的时候没有样式&#xff0c;按照官方的按需加载的方式引入的 import { ElMes…

Kafka系列 - Kafka一篇入门

Kafka是一个分布式流式处理平台。很多分布式处理系统&#xff0c;例如Spark&#xff0c;Flink等都支持与Kafka集成。 Kafka使用场景 消息系统&#xff1a;Kafka实现了消息顺序性保证和回溯消费。存储系统&#xff1a;Kafka把消息持久化到磁盘&#xff0c;相比于其他基于内存的…

PropertyTokenizer属性解析器实现,So Easy

PropertyTokenizer是Mybatis中的属性解析器&#xff0c;其主要实现原理如下&#xff1a; public PropertyTokenizer(String fullname) {// 判断是否以“.”分隔int delim fullname.indexOf(.);if (delim > -1) {name fullname.substring(0, delim);children fullname.su…

1 时间序列模型入门: LSTM

0 前言 循环神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;是一种用于处理序列数据的神经网络。相比一般的神经网络来说&#xff0c;他能够处理序列变化的数据。比如某个单词的意思会因为上文提到的内容不同而有不同的含义&#xff0c;RNN就能够很好…

抖音小店开店指南:流程、准备和营销策略一站解析

抖音小店已成为一个热门的社交电商平台&#xff0c;为商家提供了一个快速、方便、低成本的开店通道。下面四川不若与众将介绍抖音小店开店的流程和需要准备的工作&#xff0c;帮助商家顺利开启自己的电商之路。 一、开店准备工作&#xff1a; 1. 产品准备&#xff1a;确定出售…

系列十五、BeanDefinition

一、BeanDefinition 1.1、概述 BeanDefinition是一个接口&#xff0c;主要负责存储bean的定义信息&#xff0c;决定bean的生产方式&#xff0c;是一个定义态的bean&#xff0c;类似于说明书。后续BeanFactory就可以根据这些信息生产bean了。比如实例化&#xff1a;可以通过反射…

浅析基于物联网的远程抄表系统的设计及应用

安科瑞 华楠 摘 要&#xff1a;本文基于物联网的概念&#xff0c;使用 ZigBee、通用分组无线服务技术两种无线通信技术相结合的方式实现远程抄表并对数据进行存储和管理。此系统设计主要分为硬件方面的设计和软件方面的设计&#xff0c;硬件方面的设计需要完成三个部分的硬件制…

快速认识Linux的几个指令

我们先简单认识几个指令&#xff0c;为之后的指令学习打好基础 打开XShell并登录云服务器 01.pwd指令 pwd命令的作用是显示当前在Linux系统中所处的路径 02.ls指令 ls命令的作业是罗列出当前路径下的文件名&#xff08;即pwd的路径下&#xff09;&#xff0c;由于我们没有新…

人工智能-注意力机制之Transformer

Transformer 比较了卷积神经网络&#xff08;CNN&#xff09;、循环神经网络&#xff08;RNN&#xff09;和自注意力&#xff08;self-attention&#xff09;。值得注意的是&#xff0c;自注意力同时具有并行计算和最短的最大路径长度这两个优势。因此&#xff0c;使用自注意力…

【H5 Canvas】一篇通

文章目录 Canvas的创建(HTMLCanvasElement)图形绘制&#xff1a;H5为Canvas对应的2D上下文Context提供了一系列的画图接口保存save、恢复restore、变换Transformations Canvas的创建(HTMLCanvasElement) 定义canvas HTML元素&#xff0c;默认长宽300x150 <canvas width&qu…

利用chart.js来完成动态网页显示拆线图的效果

<% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%><%! String list"[一月份, 二月份, 三月份,四月份, 五月份, 六月份, 七月]"; String label"我的一个折线图"; String data &qu…

RocketMq架构和源码解析

NameServer&#xff1a;作为注册中心&#xff0c;提供路由注册、路由踢出、路由发现功能&#xff0c;舍弃强一致&#xff0c;保证高可用&#xff0c;集群中各个节点不会实时通讯&#xff0c;其中一个节点下线之后&#xff0c;会提供另外一个节点保证路由功能。 Broker&#xf…

为什么网上大量程序员卡35岁年龄招聘,而从来不报道测试、技术支持、售前售后工程师呢?

其实&#xff0c;网上只报道程序员卡35岁&#xff0c;这个说法并不成立。 而是普遍卡35岁&#xff0c;但并没有明确的一个职业类别。 随便搜一下&#xff0c;一眼望过去&#xff0c;其实已经波及很多行业了。 但如果你把IT从业人员合并报道&#xff0c;确实容易给人一种“程序…