数组传递给函数的差异

时间:2015-04-09 14:41:24

标签: 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);

Where: 

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

library.h
uint8_t function(const unsigned char* array);

我的问题是:

  • 这与方法有区别吗?

其他问题:

  • 我的MCU需要在方法1而不是方法2中进行额外的操作吗?
  • 方法2中还有其他常量,为什么要使用?使用指针时使用const是安全的吗?

2 个答案:

答案 0 :(得分:3)

  1. unsigned char array[]只是函数声明中unsigned char *array的语法糖。它们完全相同。

  2. const表示function保证不会修改array的内容。第一个例子对调用者没有这样的保证。

答案 1 :(得分:1)

通常在c / c ++中 unsigned char array [] unsigned char * array ,它由连续的内存组成。

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

提及const- (const unsigned char * array)表示其值不会改变。