【扩展知识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

最新文章

  1. marquee标签,好神奇啊...
  2. WebApi 学习随笔(一)
  3. Listbox与Listbox with key的区别
  4. iOS 的UIWindow 类研究
  5. Bootstrap分页插件:bootstrap-paginator
  6. js冒泡事件之之之
  7. Android bluetooth low energy (ble) writeCharacteristic delay callback
  8. 公网IP和私有IP
  9. Voting
  10. spring boot 之热部署(三)
  11. iOS开发点滴-添加阴影效果
  12. Linux csplit命令详解
  13. php接口 接受ios或android端图片; php接收NSData数据
  14. 【刷题】BZOJ 1924 [Sdoi2010]所驼门王的宝藏
  15. 关于ansbile工具的shell、command、script、raw模块的区别和使用场景
  16. 获取随机字符串的方法 GetRandomString
  17. QT 基本图形绘制
  18. ui-select : There is no &quot;X&quot;(delete button) with selectize theme, when allow-clear=&quot;true&quot;
  19. Transaction And Lock--由Lookup导致的死锁情况
  20. 【bzoj2699】更新 dp

热门文章

  1. 在Windows上安装和配置Jenkins
  2. redis:哨兵集群配置
  3. CSS3---媒体查询与响应式布局
  4. Tomcat server.xml配置文件
  5. Tiny4412 U-BOOT移植(转)
  6. 《算法导论》 — Chapter 8 线性时间排序
  7. NGINX模块(二)
  8. 查看java进程中哪个线程在消耗系统资源
  9. bzoj1708 [Usaco2007 Oct]Money奶牛的硬币 背包dp
  10. Codeforces914E. Palindromes in a Tree