zoukankan      html  css  js  c++  java
  • sizeof/strlen小论

    sizeof这个函数的用法,你真的懂吗,不见得吧。上一段代码看一下就知道了:

     1 #include <iostream>
     2 using namespace std;
     3 
     4 void Founc(char str1[100])
     5 {
     6     cout<<sizeof(str1)<<endl;
     7 }
     8 
     9 int main( void )
    10 {
    11     char str[] = "hello";
    12     char ch[100]="world";
    13     char *p = str;
    14     int n=10;
    15     cout<<sizeof(str)<<" "<<sizeof(p)<<" "<<sizeof(n)<<" "<<sizeof(ch)<<endl;
    16     Founc(str);
    17     void *p1=malloc(100);
    18     cout<<sizeof(p1)<<endl;
    19     return 0;
    20 }


    这段程序的结果是:

    6 4 4  100

    4

    4

    你答对了吗?

    注意指针类型在32位系统中占4个字节。

    strlen与sizeof的区别

      1.从功能定义上,strlen函数,用来求字符串的长度,sizeof函数是用来求指定变量或变量类型等所占用内存的大小;

      2.sizeof是运算符,而strlen是C库函数strlen只能用char*做参数,且以'/0'结尾的;

      对于静态数组处理:

         char str[20]="0123456789";

         strlen(str)=10;   //表示数组中字符串的长度

         sizeof(str)=20;   //表示数组变量分配的长度

      对于指针处理:

         char *str="0123456789";

         strlen(str)=10;     //表示字符串的长度

         sizeof(str)=4;      //表示指针变量的所占内存大小

         sizeof(*str)=1;     //表示'0'这个字符变量的所占内存大小

  • 相关阅读:
    go ERROR invalid character '<' looking for beginning of value
    C#实现将网址生成二维码图片
    二、WPF入门教程——Bingding学习
    一、WPF入门教程——创建WPF项目
    C#实现DataTable行列转置
    VBS整蛊代码
    Task.WhenAll和Task.WhenAny
    Task.WaitAll和Task.WaitAny
    CancellationTokenSource
    组合ContinueWith
  • 原文地址:https://www.cnblogs.com/sjlove/p/3061489.html
Copyright © 2011-2022 走看看