【扩展知识2】函数strlen()和非函数sizeof的使用

【扩展文件夹】

  1. strlen函数
  2. sizeof


( 1 )函数strlen()

原型:size_tstrlen ( const char * str );

返回C字符串(只支持此类型)的长度。

//strlen()的使用

#include <stdio.h>

int main( void )
{
chararray[ ]= "zhijiandeweixiao"; //指尖的微笑 //array为数组的首个地址
printf("%s的长度为%d\n", array, strlen( array ) ); return 0;
}

( 2 )非函数sizeof的使用

有时候我们要求int型数组的元素。

如int array[ ]= { 1,2,3, 4, 5, 6….};个数少时能够数。可是当个数特多时。我们就得交给计算机算了。可是在strlen仅仅仅算字符串的个数。要为能数int型或float型数组的个数。就得自己开动脑子了。

有效方法例如以下:

//非函数sizeof的使用
#include <stdio.h> int main( void )
{
intnum;
intarray[]= { 1, 2, 3, 4, 5, 6, 7 }; //sizeof(array )== 28 个字节
//sizeof( array[ 0 ] )== 4 个字节
//所以sizeof(array )/ sizeof( array[ 0 ] )== 7,即数组元素个数 num=sizeof( array )/ sizeof( array[ 0 ] ); printf("sizeof( array )= %d\n", sizeof( array ) );
printf("sizeof( array[ 0 ] )= %d\n", sizeof( array[ 0 ] ) );
printf("sizeof( array )/ sizeof( array[ 0 ] )= %d\n", num ); return 0;
}

注意事项:

  1. sizeof不能计算动态分配的数组大小。
  2. 当把数组作为函数的參数时。你无法在程序执行时通过数组參数本身告诉函数该数组的大小,由于函数的数组參数相当于指向该数组第一个元素的指针。

//非函数sizeof的使用2
#include <stdio.h> int main( void )
{
intnum;
intarray[]= { 1, 2, 3, 4, 5, 6, 7 }; //array为数组首地址
//array为数组首元素的首地址
//sizeof(array )== 28 个字节
//sizeof( array[ 0 ] )== 4 个字节
//所以sizeof(array )/ sizeof( array[ 0 ] )== 7,即数组元素个数 num=sizeof( array )/ sizeof( array[ 0 ] ); printf("sizeof( array )= %d\n", sizeof( array ) );
printf("sizeof( array[ 0 ] )= %d\n", sizeof( array[ 0 ] ) );
printf("sizeof( array )/ sizeof( array[ 0 ] )= %d\n", num ); return 0;
}

执行结果:

sizeof( array )= 28

sizeof( array[ 0 ] )= 4

sizeof( array )/ sizeof(array[ 0 ] )= 7

//非函数sizeof的使用2
#include <stdio.h> void print( int array[] )
{
int num; num= sizeof( array )/ sizeof( array[ 0 ] ); printf( "num= %d\n", num ); return ;
} int main( void )
{
intarray[]= { 1, 2, 3, 4, 5, 6, 7 }; print(array ); return 0;
}

执行结果:

num= 1

有结果可知: 当把数组作为函数的參数时,数组參数相当于指向该数组第一个元素的指针,所以的大小为1,即首元素。

【指尖的微笑】错误在所难免,希望得到大家的指正^-^

转载时保留原文的链接http://oursharingclub.joinbbs.net和http://blog.csdn.net/mirrorsbeyourself

【扩展知识2】函数strlen()和非函数sizeof的使用的更多相关文章

  1. python---基础知识回顾(二)(闭包函数和装饰器)

    一.闭包函数: 闭包函数: 1.在一个外函数中定义了一个内函数 2.内函数里运用了外函数的临时变量,而不是全局变量 3.并且外函数的返回值是内函数的引用.(函数名,内存块地址,函数名指针..) 正确形 ...

  2. [Chapter 3 Process]Practice 3.1 相关知识:进程创建、fork函数

    3.1 Using the program shown in the Figure3.30, explain what the output will be at LINE A 答案:LINE A 处 ...

  3. php中strlen()和mb_strlen()函数

    php中strlen()和mb_strlen()函数 一.总结 一句话总结: mb_strlen()函数 的作用是 通过不同的编码计算字符串的长度: 比如 echo mb_strlen('中文a字1符 ...

  4. Python基础知识总结笔记(四)函数

    Python基础知识总结笔记(四)函数python中的函数函数中的参数变量作用域偏函数PFA递归函数高阶函数BIFs中的高阶函数匿名函数lambda闭包Closure装饰器Decorator函数式编程 ...

  5. C语言基础知识:几种特殊的函数宏封装方式

    函数宏介绍 函数宏,即包含多条语句的宏定义,其通常为某一被频繁调用的功能的语句封装,且不想通过函数方式封装来降低额外的弹栈压栈开销. 函数宏本质上为宏,可以直接进行定义,例如: #define INT ...

  6. 【编程题目】请修改 append 函数,利用这个函数实现两个非降序链表的并集

    42.请修改 append 函数,利用这个函数实现(链表):两个非降序链表的并集,1->2->3 和 2->3->5 并为 1->2->3->5另外只能输出结 ...

  7. [C/C++基础] C语言常用函数strlen的使用方法

    函数声明:extern unsigned int strlen(char *s); 所属函数库:<string.h> 功能:返回s所指的字符串的长度,其中字符串必须以’\0’结尾 参数:s ...

  8. strlen() 和 strcpy()函数

    strlen() 和 strcpy()函数的区别,这两个一个是返回一个C风格字符串的长度,一个是对一个C风格字符串的拷贝,两个本来功能上是不同的,此外,他们还有一些细小的区别:strlen(" ...

  9. C++静态成员函数不能调用非静态成员变量

    其实我们从直观上可以很好的理解静态成员函数不能调用非静态成员变量这句话因为无论是静态成员函数还是静态成员变量,它们 都是在类的范畴之类的,及在类的整个生存周期里始终只能存在一份.然而非静态成员变量和非 ...

随机推荐

  1. windows下安装rabbitmq以及php扩展amqp

    先安装RabbitMQ 安装Erlang  下载地址http://www.erlang.org/downloads 我选的是64位 这个根据自己情况下载,双击安装之 安装RabbitMQ 下载地址ht ...

  2. python_字符串类型

    1.在python中用单引号' ',双引号'' '',三引号'''  ''' 标注字符串类型. >>> name = "Alex Li" #双引号 >> ...

  3. InsecureRequestWarning: Unverified HTTPS request is being made.解决方法

    在前面添加: import requests from requests.packages.urllib3.exceptions import InsecureRequestWarning reque ...

  4. GIL和copy

    GIL: Global Interpreter Lock 全局解释器锁 多任务执行占CPU 多任务占用CPU的资源消耗:进程>线程>协程 在cpython解释器中只有进程是真的多任务,线程 ...

  5. 基本Sql语句汇总

    关于Sql语句的学习,选择的DBMS为SQL Server,Sql语句随着工作中的应用不断补充,不具备系统性,为个人笔记汇总,网上有很多优秀的资源,故不对每一处应用做过多细致的说明,后期会对部分篇幅较 ...

  6. DEVExpress中BarItem的使用2

    没有验证LookUpEdit与ComBox的区别. 没有验证ZoomTrackBarControl的使用方法. SparkLine看着也蛮有趣,需要绑定数据源控件的均没有验证. 前一节介绍的BarIt ...

  7. 04004_使用JavaScript完成注册表单数据校验

    1.需求分析 (1)用户在进行注册的时候会输入一些内容,但是有些用户会输入一些不合法的内容,这样会导致服务器的压力过大,此时我们需要对用户输入的内容进行一个校验(前端校验和后台校验): (2)前端校验 ...

  8. mysql 递归查询父节点 和子节点

    查父集合 --drop FUNCTION `getParentList` )) ) BEGIN ) default ''; ) default rootId; WHILE rootId is not ...

  9. BigTable

    Bigtable发布于2006年,启发了无数的NoSQL数据库,比如:Cassandra.HBase等等. Cassandra架构中有一半是模仿Bigtable,包括了数据模型.SSTables以及提 ...

  10. 八数码难题 双向搜索(codevs 1225)

    题目描述 Description Yours和zero在研究A*启发式算法.拿到一道经典的A*问题,但是他们不会做,请你帮他们.问题描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字 ...