用字符串常量初始化指针和数组
来源:互联网 发布:数据库如何进行注释 编辑:程序博客网 时间:2024/05/16 03:27
本文选自:c专家编程.P87.
定义指针时,编译器并不为指针所指的对象分配空间,它只是分配指针本身的空间,除非在定义时同时赋给指针一个字符串常量进行初始化。例如,下面的定义创建一个字符串常量(为其分配内存):
char *p = “breadfruit”;
注意只有对字符串常量才是如此。不能指望为浮点数之类的变量分配空间,如:
float *pip = 3.14; /*错误,无法通过编译*/
在ANSI C中,初始化指针时所创建的字符串常量被定义为只读。如果试图通过指针修改这个字符串值,程序会出现未定义的行为。在有些编译器中,字符串常量被存放在只允许读取的文本段中,以防止它被修改。
数组也可以用字符串常量进行初始化:
char a[] = “gooseberry”;
与指针相反,由字符串常量初始化的数组是可以修改的。比如下面的语句:
strncpy( a, “black”, 5 );
将数组的值修改为“blackberry”。
#include<stdio.h>
#include<string.h>
int main(void)
{
char *p = "this is a example";
//char *pi = 3.14; //这样定义是错误的,无法通过编译
//p[0] = 'T'; //修改该字符串常量时,编译是没问题,但是运行时会出现异常
char a[] = "gooseberry";
strncpy( a, "black", 5 );
printf("%s/n", p );
printf("%s/n", a );
return 0;
}
- 用字符串常量初始化指针和数组
- 用字符串常量初始化指针和数组
- 用字符串常量对字符数组进行初始化
- 不要再直接用字符串常量给字符串指针初始化/赋值了
- 用字符数组和字符串指针定义字符串常量时需要注意的一点
- 字符串常量初始化指针和字符数组
- "显微镜"下细看字符串常量初始化数组和指针
- c语言用字符数组和字符指针删除相同字符
- 指针常量和常量指针、函数指针和指针函数、指针数组和数组指针
- 用new创建对象和用字符串常量创建对象的区别
- C++编程入门系列之三十三(数组、指针和字符串:用字符数组存放和处理字符串)
- c语言中字符数组和字符指针的区别:(一句话,一旦要修改就用字符数组)
- 用字符串常量做函数模板的参数
- 用字符串数组显示菜单
- c语言的指针、数组和常量修饰符const
- 字符串初始化指针和初始化数组区别
- 常量指针必须初始化
- c/c++中的数组指针,指针数组,常量指针和指针常量
- 关于QMatrix
- 时间的轨迹
- C#中foreach的原理
- 数组作为函数的参数时,不能通过sizeof运算符得到该数组的大小
- array_name和&array_name的异同
- 用字符串常量初始化指针和数组
- final关键字
- 使用既有内核 配置 文件 编译Linux
- 指针和数组的相同与不同
- 郭德纲绝句,没有一句不让你笑的
- 10 Tips and Tricks for Private BitTorrent Sites
- Object Oriented Design Principles 面向对象设计原则
- abstract关键字
- MFC学习笔记(1)