【扩展知识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\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.nethttp://blog.csdn.net/mirrorsbeyourself

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值