热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

为什么strlen()也适用于字符数组?

如何解决《为什么strlen()也适用于字符数组?》经验,为你挑选了1个好方法。

strlen()是一个函数参数应该是一个字符串,但为什么它也适用于字符数组?
例如

char abc[100];   
cin.getline(abc,100);  
len=strlen(abc);  

如果它适用于字符数组并告诉元素的数量,它也可以用于int数组吗?

注意:我使用的是TurboC++



1> Keith Thomps..:

了解字符串是什么很重要.C标准将字符串定义为"由第一个空字符终止并包括第一个空字符的连续字符序列".它是一种数据格式,而不是数据类型 ; 一个C风格的字符串可能包含在一个数组中char.不要将其与(注意:无后缀)标头中std::string定义的特定于C++的类型混淆..h

报头,或优选地,所述报头中,从C标准库并入C++.在该标头中声明的函数在C风格的字符串或指向它们的指针上运行.

参数strlen是类型char*,指向字符的指针.(实际上const char*,这意味着strlen承诺不会修改它指向的任何内容.)

在大多数情况下,数组表达式被隐式转换为指向数组初始元素的指针.(有关详细信息,请参阅comp.lang.c常见问题解答第6节.)

char*传递给的参数strlen 必须指向字符数组的初始元素,并且数组中的'\0'某处必须有一个空字符()来标记字符串的结尾.它计算最多但不包括空终止符的字符数.

它不会(也不能)计算数组中元素的数量,只计算字符串中的字符数 - 只有当数组实际包含有效字符串时才能这样做.如果数组中的任何位置都没有空字符,或者指针为空或无效,则行为未定义.

所以当你写:

char abc[100];
cin.getline(abc,100);
len=strlen(abc);

调用以cin.getline确保数组abc包含正确的以null结尾的字符串.strlen(abc)调用strlen,传递初始字符的地址; 它相当于strlen(&abc[0]).

不,strlen不会在数组上工作int.一方面,这将传递一个int*值,这不符合char*strlen要求,因此它可能不会编译.即使忽略这一点,strlen也要算字符,而不是ints.(int如果你愿意,你可以编写自己类似的函数来计算s,但它仍然必须有一些方法来找到你有兴趣计算的元素的结尾.它无法访问实际的长度.数组除非你明确地传递它.)


@eatq:换句话说,我在这里度过的时间越多,我写短评就越糟糕.8-)}
推荐阅读
  • PHP函数的工作原理与性能分析
    在编程语言中,函数是最基本的组成单元。本文将探讨PHP函数的特点、调用机制以及性能表现,并通过实际测试给出优化建议。 ... [详细]
  • 在iOS开发中,多线程技术的应用非常广泛,能够高效地执行多个调度任务。本文将重点介绍GCD(Grand Central Dispatch)在多线程开发中的应用,包括其函数和队列的实现细节。 ... [详细]
  • 本题涉及一种由Chip和Dale设计的文本加密方法。该方法通过预先约定的矩阵行数和列数,将字符转换为特定的二进制形式,并以螺旋方式填充矩阵。最终将矩阵中的二进制数连接成一个字符串,实现加密。 ... [详细]
  • 本文探讨了 TypeScript 中泛型的重要性和应用场景,通过多个实例详细解析了泛型如何提升代码的复用性和类型安全性。 ... [详细]
  • 【线段树】  本质是二叉树,每个节点表示一个区间[L,R],设m(R-L+1)2(该处结果向下取整)左孩子区间为[L,m],右孩子区间为[m ... [详细]
  • 本文将深入探讨C语言代码的可重用性,解释其重要性和实现方法。通过具体示例,我们将展示如何通过封装和模块化设计提高代码的可重用性。 ... [详细]
  • 开发笔记:1035 Password (20) ... [详细]
  • 作为一名新手开发者,我正在尝试使用 ASP.NET 和 Vue.js 构建一个单页面应用,涉及多个复杂组件(如按钮、图表等)。希望有经验的开发者能够提供指导。 ... [详细]
  • Java 中的控制流与作用域
    本文详细介绍了 Java 中的控制流语句,包括块作用域、if 语句、for 循环、while 循环、do-while 循环、switch 语句以及 break 和 continue 语句的使用方法。通过具体的代码示例,帮助读者更好地理解和应用这些控制流结构。 ... [详细]
  • 用C语言实现的科学计算器,支持2种常量,10种基本函数,Ans寄存器。相对来说拓展性应该是不错的,思路是首先化简复杂名称的函 ... [详细]
  • 本文详细介绍了Go语言中的数组,包括其基本概念、声明方式、初始化方法以及常见操作。 ... [详细]
  • Python函数的高级用法[python基础]
    Python的函数也是一种值:所有函数都是function对象,这意味着可以把函数本身赋值给变量,就像把整数、浮点数、列表、元组赋值给变量一样;同样可以使用函数作为函数的形参,也可 ... [详细]
  • 深入解析Java中的空指针异常及其预防策略
    空指针异常(NullPointerException,简称NPE)是Java编程中最常见的异常之一。尽管其成因显而易见,但开发人员往往容易忽视或未能及时采取措施。本文将详细介绍如何有效避免空指针异常,帮助开发者提升代码质量。 ... [详细]
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • C语言编写线程池的简单实现方法
    2019独角兽企业重金招聘Python工程师标准好文章,一起分享——有时我们会需要大量线程来处理一些相互独立的任务,为了避免频繁的申请释放线程所带 ... [详细]
author-avatar
e絕纞乄
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有