const使用浅谈
10 29, 2008 Linux
C语言中使用const无非就是声明常量的,常量是不能被修改的,const的使用最为频繁的莫过于字符串操作了。下面写下我自己的一些分析。附上源代码先:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char ptr[16] = {0};
//char *ptr = “kobe Bryant”;
const char *const_data;
char *const const_ptr = ptr;
strcpy(ptr, “kobe Bryant”);
const_data = ptr;
printf(”%s\n”, const_data);
//const_data[0] = ‘K’;
//const_ptr = ptr;
*const_ptr = ‘L’;
printf(”%s\n”, const_ptr);
return 0;
}
注释的部分都是一些需要注意的地方,很容易出错。char *ptr = “kobe Bryant”;这条语句其实跟const *char ptr= “kobe Bryant”一样,都是声明常量字符串的,该字符串内容不能修改,也就是当前ptr所指向的那一块内存不可以修改,只读;但是ptr还是可以修改的,也就是可以修改ptr指向哪块内存。char *const const_ptr = ptr;这条语句是声明一个常量指针,const修饰符在*后面,说明这是指针的修饰符,指明该指针是const,只读; 事实上*const_ptr = ‘L’;const_ptr指向的内存数据是可以修改的。其实如果你仔细去想想,char *const const_ptr有点类似于char const_ptr[16]声明,都可以修改数据,但是不能修改const_ptr,不同的是前者可以由我们指定指针值,后者由于是数组,其地址由编译器为我们分配。



来说两句吧