const使用浅谈

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,不同的是前者可以由我们指定指针值,后者由于是数组,其地址由编译器为我们分配。

 

来说两句吧

在评论中,你可以使用以下标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>