zoukankan      html  css  js  c++  java
  • 数组作为函数参数传递时退化为指针(腾讯)

    对字符串进行 sizeof 操作的时候,会把字符串的结束符“”计算进去的;

    进行 strlen操作求字符串的长度的时候,不计算 的。

    数组作为函数参数传递的时候,已经退化为指针了,Func 函数的参数 str_arg 只是表示一个指针,那个 100 不起任何作用的。改成void Func(char str_arg[2]),输出结果不变。

    #include <iostream>
    #include <stdio.h>
    using namespace std;
    void Func(char str_arg[100]){
        printf("%d
    ",sizeof(str_arg));//4
        printf("%d
    ",strlen(str_arg));//5
    }
    int main(){
        char str[]="Hello";
        printf("%d
    ",sizeof(str));//6
        printf("%d
    ",strlen(str));//5
        char *p=str;
        printf("%d
    ",sizeof(p));//4
        Func(str);
    }

    输出:6 5 4 4 5

    #include <iostream>
    #include <stdio.h>
    using namespace std;
    void Func(char str_arg[100]){
        printf("%d
    ",sizeof(str_arg));
        printf("%d
    ",strlen(str_arg));
    }
    int main(){
        char str[100]="Hello";
        printf("%d
    ",sizeof(str));//100
        printf("%d
    ",strlen(str));
        char *p=str;
        printf("%d
    ",sizeof(p));
        Func(str);
    }

    输出:100 5 4 4 5

  • 相关阅读:
    要搜索内容
    .net core 过滤器
    C# => 写法
    js 数组的forEach 函数
    .net core 下载文件 其他格式
    win10 1903 更改文字大小
    fetch 写法
    C# 匿名对象 增加属性
    ping —— 虚拟机
    selenium验证车贷计算器算法
  • 原文地址:https://www.cnblogs.com/seven7seven/p/3659309.html
Copyright © 2011-2022 走看看