const 是类型修饰符,const型的变量不能被程序修改,可以赋初始值。const类型的变量会被程序放入只读区。也就是说用const修饰的变量不能被修改(包括指针指向的变量)。
看下面的小例子:
#import <Foundation/Foundation.h>
#include <stdlib.h>
void f(const char *str);
int main (int argc, const char * argv[]) {
f("this is a test");
return 0;
}void f(const char *str ){
while (*str) {
if (*str ==' ') {
printf("%c",'-');
}else {
printf("%c",*str);
}
str++;}
}
这代码是正确的,代码中只是访问了const修饰的指针,没有对其进行修改。
如果代码改为:
void f(const char *str ){
while (*str) {
if (*str ==' ') {
*str='-';
}
printf("*str");
str++;}
会报这样的错,如图:
错误表示所修改的变量是只读型的,不能被修改。
此外代码 *str ==' ' 中两个单引号中间是有空格的,如果没有打上空格,会报空指针异常。
%c 是代表一个char类型的占位符。