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种情况下都是不同的。只有一个常量
,它可能适用于不同的事物。这个案例就是我在回答中描述的。