0

我喜欢定义一个接收可变大小的 char 数组的方法。

这是我目前的定义:

+(int) findStartIndex: (NSData*)buffer  searchPattern: (char*) searchPattern;

这就是我所说的:

  const char a[] = {'a','b','c'};
  startIndex = [self findStartIndex:buffer  searchPattern: a];

像这样

  const char b[] = {'1','2'};
  startIndex = [self findStartIndex:buffer  searchPattern: b];

但我不断收到编译器警告:

Sending 'const char[3]' to parameter of type 'char *' discards qualifiers 

Sending 'const char[2]' to parameter of type 'char *' discards qualifiers 

分别。

如何正确执行此操作?

4

2 回答 2

2

因为你声明的参数是char *,但是传递的是const char []。这是一个潜在的风险。您应该进行以下更改。我测试时没有警告。

+(int) findStartIndex: (NSData*)buffer  searchPattern: (const char*) searchPattern
于 2013-03-10T09:30:46.163 回答
1

C 中的限定符首先应用于左侧的关键字,然后回退到右侧。 const char arr[]不是对 char 数组的常量引用,它始终是 char 类型。但是,当您将它传递给一个采用指向 char 的指针的方法时,您会失去该类型的 const'ness,并且会收到警告。(为晦涩的 C 东西万岁!)

于 2013-03-10T09:35:26.017 回答