Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 传递给函数的数组差异_C++_C_Arrays_Function_Pointers - Fatal编程技术网

C++ 传递给函数的数组差异

C++ 传递给函数的数组差异,c++,c,arrays,function,pointers,C++,C,Arrays,Function,Pointers,我想问一下这两种数组传递方法之间是否有区别: unsigned char array[100]; function(array); Where: library.cpp uint8_t LibraryClass::function(unsigned char array[]) { } library.h uint8_t function(unsigned char array[]); 这是: unsigned char array[100]; function(array); W

我想问一下这两种数组传递方法之间是否有区别:

unsigned char array[100];

function(array);

Where: 

library.cpp
uint8_t LibraryClass::function(unsigned char array[]) { }

library.h
uint8_t function(unsigned char array[]);
这是:

unsigned char array[100];

function(array);

Where: 

library.cpp
uint8_t LibraryClass::function(const unsigned char* array) { }

library.h
uint8_t function(const unsigned char* array);
我的问题是:

  • 这两种方法之间有什么区别
补充问题:

  • 我的MCU需要在方法1而不是方法2中执行附加操作
  • 方法2中有额外常量,为什么使用?使用指针时使用常量是否安全
  • unsigned char array[]
    只是函数声明中的
    unsigned char*array
    的语法糖。它们完全一样

  • 常量
    表示
    函数
    保证不修改
    数组
    的内容。第一个示例对调用方没有这样的保证

  • unsigned char array[]
    只是函数声明中的
    unsigned char*array
    的语法糖。它们完全一样

  • 常量
    表示
    函数
    保证不修改
    数组
    的内容。第一个示例对调用方没有这样的保证


  • 通常在c/c++中,无符号字符数组[]是由连续内存组成的无符号字符*数组

    每当数组被传递给函数时,它都被视为表示基址的指针(*)


    提及常量-(常量无符号字符*数组)表示其值不会改变。

    通常在c/c++无符号字符数组[]中是由连续内存组成的无符号字符*数组

    每当数组被传递给函数时,它都被视为表示基址的指针(*)


    提及const -<强>(connunchar char *数组)表示其值不会改变。

    一般来说,C文件具有.c扩展名,C++文件通常具有.cpp扩展名。您确定使用C(语言不相同)吗?一般来说,C文件具有.c扩展名,C++文件通常具有.cpp扩展名。你确定你使用的是C语言吗(语言不一样)?值得一提的是,指针参数有三种不同的
    const
    :指针本身是const时,指向的数据是const,或者两者都是const。函数签名的保证在所有3种情况下都是不同的。只有一个
    常量
    ,它可能适用于不同的事物。这个例子就是我在回答中描述的。值得一提的是,指针参数有3种不同的
    const
    :当指针本身是const时,指向的数据是const,或者两者都是const。函数签名的保证在所有3种情况下都是不同的。只有一个
    常量
    ,它可能适用于不同的事物。这个案例就是我在回答中描述的。