• 数组作为函数参数传递时退化为指针(腾讯)


    对字符串进行 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

  • 相关阅读:
    二、一切都是对象
    一、对象导论
    CSS 属性大全
    CSS颜色代码大全
    CSS Position 定位属性
    CSS Box Model 盒子模型
    ThreadLocal
    Java 模拟死锁
    byte 最小值为啥是最小是 -128 ;int最小值为啥是 -2147483648
    cmd 查看端口号占用情况
  • 原文地址:https://www.cnblogs.com/seven7seven/p/3659309.html
Copyright © 2020-2023  润新知