我喜欢定义一个接收可变大小的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
分别
如何正确地做到这一点?
答案 0 :(得分:2)
因为您声明为char *的参数,但传递了const char []。这是一个潜在的风险。你应该做出以下改变。我测试时没有警告。
+(int) findStartIndex: (NSData*)buffer searchPattern: (const char*) searchPattern
答案 1 :(得分:1)
C中的限定符首先应用于左侧的关键字,然后再回到右侧。 const char arr[]
不是对char数组的常量引用,它始终是char类型。但是,当你将它传递给一个带有指向char的指针的方法时,你会丢失该类型的常量,并且会收到警告。 (Hooray对于晦涩难懂的C东西!)