【扩展知识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. 10. GLOBAL_STATUS 与 SESSION_STATUS

    10. GLOBAL_STATUS 与 SESSION_STATUS 注意 从MySQL 5.7.6开始,show_compatibility_56系统变量的值会影响此处描述的表中的可用信息. 有关详 ...

  2. 2. 更改InnoDB redo日志文件的数量或大小

    2. 更改InnoDB redo日志文件的数量或大小 要更改InnoDB 重做日志文件的数量或大小,请执行以下步骤: 1)停止MySQL服务器,确保正常关闭且没有错误发生 2) 编辑my.cnf以更改 ...

  3. matlab自定义函数的五种表示(前2种重点)

    1.命令文件/函数文件+函数文件:多个M文件 2.函数文件+子函数:一个M文件 3. inline:无需M文件 4.符号表达式+subs方式:无需M文件 5.字符串+subs方式:无需M文件 第一种: ...

  4. 一直被用错的6种SQL 错误用法

    一直被用错的6种SQL 错误用法 1.LIMIT 语句 2.隐式转换 3.关联更新.删除 4.EXISTS语句 5.条件下推 6.提前缩小范围 sql语句的执行顺序: FROM ON JOIN WHE ...

  5. 2019年,Python工程师必考的6个面试题,Python面试题No5

    第1题:Python里面如何实现tuple和list的转换? 函数tuple(seq)可以把所有可迭代的(iterable)序列转换成一个tuple, 元素不变,排序也不变 list转为tuple: ...

  6. win10修改文件管理器默认打开我的电脑

  7. 【练习】reserving.kr 之imageprc write up

    补充:c++ builder 与 windows  API经典范例 #include <vcl.h> #pragma hdrstop #include "Unit1.h" ...

  8. LeetCode (32) Longest Valid Parentheses

    题目 Given a string containing just the characters '(' and ')', find the length of the longest valid ( ...

  9. 在ubuntu18.04版本安装vscode

    方式一:图形安装 1. 在ubuntu桌面找到应用中心 2. 在软件中心中,搜索Visual Studio Code 3. 在页面中就可以直接选择安装 方式二:命令安装 1. 从vscode官网下载最 ...

  10. 如何将表的行数赋值给变量(MySQL)

    delimiter $$ drop procedure if exists test_at $$ create definer=root@localhost procedure test_at() b ...