码迷,mamicode.com
首页 > 其他好文 > 详细

常量, char[], const char[], char*, const char*, char* const以及const char* const的详解

时间:2020-02-13 23:18:25      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:程序   类型   border   一起   nbsp   不可   不能   时间   code   

注意,这里用char类型只是举了一个例子,其他的int之类的也通用。

1: 常量:

例子:

char str[] = "Hello world!";
char ch = a;
int i = 12345;

我们看等号右边的,这些就叫常量。常量在程序运行过程中不会发生改变,并且随着程序一起装入内存。

2: char[]:

例子:

char str[] = "Hello world";

str是一个字符型数组(字符串)变量。可读可写。

3: const char[]:

例子:

const char str[] = "Hello world!";

str是一个只读字符串。它的内存单元中的值不可以被改变,只能在变量分配内存的时候被初始化进去。如果这样写就是非法的:

const char str[] = "Hello world!";
str = "ypa!";//Error Example

4: char*:

例子:

char str[] = "Hello world";
char *lpstr = str;

 lpstr是一个指向字符数组(字符串)变量的指针变量。lpstr的值可读可写,也就是在不同时间它可以指向不同的的内存单元;同时,它所指向的内存单元str也可读可写。

5: const char*:

例子:

const char str[] = "Hello world!";
const char *lpstr = str;
//这样写也一样:
//char const str[] = "Hello world!";
//char const *lpstr = str;

lpstr是一个指向只读字符串的指针变量。lpstr的值可读可写,也就是在不同时间它可以指向不同的的内存单元;但是,它所指向的内存单元str只读不可写。如果这样写就是非法的:

const char str[] = "Hello world!";
const char *lpstr = str;
*lpstr = y;//Error Example

6: char* const:

例子:

char str[] = "Hello world!";
char* const lpstr = str;

lpstr是一个指向字符数组(字符串)变量的只读指针量。lpstr的值只读不可写,也就是它被初始化了时候就不能再指向其他变量了;但是,它所指向的内存单元str是可读可写的。如果这样写就是非法的:

char str1[] = "Hello world!";
char str2[] = "ypa!";
char* const lpstr = str1;
lpstr = str2;//Error Example

7: const char* const:

例子:

const char str[] = "Hello world!";
const char* const lpstr = str;

lpstr是一个指向只读字符串的只读指针量。lpstr的值只读不可写,也就是它被初始化了时候就不能再指向其他变量了;并且它所指向的内存单元str也是只读不可写的。如果这样写就是非法的:

const char str1[] = "Hello world!";
const char str2[] = "ypa!";
const char* const lpstr = str1;
*lpstr = y;//Error Expmple
lpstr = str2;//Error Example

总结:

类型 自己内存单元的属性 所指向的内存单元的属性
char[] 读/写
const char[] 只读
char* 读/写 读/写
const char* 读/写 只读
char* const 只读 读/写
const char* const 只读 只读

 

常量, char[], const char[], char*, const char*, char* const以及const char* const的详解

标签:程序   类型   border   一起   nbsp   不可   不能   时间   code   

原文地址:https://www.cnblogs.com/starchenzyme/p/12285629.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!