c中字符数组的问题
来源:互联网 发布:折扣怎么算法 编辑:程序博客网 时间:2023/12/07 20:24
通常字符数组中的所存储的内容也可以称为字符串, 但我想你想表达的意思可能是对于:char *p1 = "A String.";
和
char p2[] = "Another String.";
这两种写法的不同吧.
p1指向的这个字符串是个常量, 不可改变, 程序在编译期间就为"A String."这个字符串分配了固定的空间, 它被存储在全局静态区中.
而p2是个变量, 其内容可以被更新和改变, p2可以理解为一个不可改变其指向位置的指针, 即char * const p2, 它所占用的内存在程序运行时被自动分配和释放, 而p1占用的内存要等到整个程序结束时才被释放.
再看:
#include <stdio.h>
int g; // 存储在全局静态区
int main()
{
char* p1 = "haha"; // 和g一样
char p2[] = "haha"; // 堆栈中
printf("%x %x %x", &g, p1, p2);
}
你可以看出p1和g的位置距离很近, 而和p2相隔很远, 可以看出他们的确是被存储在不同的内存空间中的, 而且p1所指向的内容是常量, 不能改变, 不信你试试:
char* p = "This is the penalty!";
*p = 't';
所以声明指向常量字符串的指针时最好这样:
const char* p = "...";
另外任何出现在程序中以""括起的内容如果不是被存储在变量中那么它就是常量, 和上面的p1指向的类型相同, 比如:
printf("abc %d", 1);
其中的"abc %d"也是常量;
0 0
- c中字符数组的问题
- 关于C语言,字符数组中越界的两个问题
- C语言结构体中字符数组的问题
- 关于c语言中字符数组的'\0'问题
- C中字符的问题
- 关于C语言的字符数组问题
- C语言中字符数组的大小
- 数组中字符的比较问题
- 数组中字符出现的次数问题
- c语言中字符数组和字符指针的区别
- c语言中字符指针与字符数组的区别
- C语言中字符指针数组输入初始化问题
- c语言中,字符数组与字符串赋值问题
- c语言中 字符数组的问题 很纠结啊 请教高手!!!
- C语言中字符数组和字符串定义和初始化的问题
- C中关于字符的问题
- 字符数组的问题
- C语言的字符数组和字符串的问题
- 自定义闪烁的TextView
- Log4j在Java中的使用
- Windows下 git 使用
- java查找算法(三)--二分非递归查找
- linux中关于tmpfs文件系统资料的整理与分析
- c中字符数组的问题
- Spring AOP浅析
- iOS和我,开启编程人生
- Hadoop入门
- 解决SUSE Linux无法使用SSH登录的问题
- 广州虎鱼网络科技有限公司面试
- Apache Stratos探究:CLI Tool简单使用手册
- 为Android添加一个开机完成后执行的脚本
- Unicode ,UTF-8,assic, gbk, latin1编码