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


    【扩展知识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
    ", 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
    ", sizeof( array ) );
             printf("sizeof( array[ 0 ] )= %d
    ", sizeof( array[ 0 ] ) );
             printf("sizeof( array )/ sizeof( array[ 0 ] )= %d
    ", 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
    ", sizeof( array ) );
             printf("sizeof( array[ 0 ] )= %d
    ", sizeof( array[ 0 ] ) );
             printf("sizeof( array )/ sizeof( array[ 0 ] )= %d
    ", 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
    ", num );
      
      return ;
    }
     
     
    int main( void )
    {
             intarray[]= { 1, 2, 3, 4, 5, 6, 7 };
              
             print(array );
            
       return 0; 
    }

    执行结果:

    num= 1

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

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

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

  • 相关阅读:
    044 文件和数据格式化
    040 字典类型及操作
    042 实例10-文本词频统计
    Java中PreparedStatement和Statement的用法区别(转)
    java连接oracle的简单实例
    javamail发送邮件的简单实例(转)
    JAVA IO之管道流总结大全(转)
    缓冲流和转换流(转)
    使用缓冲流来读写文件(转)
    JAVA向文件中追加内容(转)
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/6903696.html
Copyright © 2020-2023  润新知