C语言入门:字符指针与字符数组的区别与应用

需积分: 9 0 下载量 182 浏览量 更新于2024-07-14 收藏 1.48MB PPT 举报
"字符指针变量与字符数组是C语言中的基础概念,它们在处理字符串时扮演着重要角色。字符数组是由若干个字符元素组成的,每个元素存储一个字符,而字符指针变量则存储字符串的首地址。字符数组可以通过初始化赋值,如`char str[20] = "I love China!"`,而字符指针变量可以指向常量字符串,如`char *cp = "I love China!"`。需要注意的是,字符指针在接收用户输入字符串时,需要先分配存储空间,例如通过`char str[10]; scanf("%s", str);`。如果直接使用未分配空间的指针,如`char *cp; scanf("%s", cp);`,会导致程序错误。正确做法是先定义一个字符数组,然后将指针指向它,如`char *cp, str[10]; cp = str; scanf("%s", cp);`。 在C语言中,数据类型分为基本类型、构造类型和指针类型。基本类型包括字符型(char)、整型(int, short, long)、浮点型(float, double)以及枚举型(enum)。构造类型包括数组、结构体(struct)和共用体(union)。指针类型用于存储内存地址,是C语言的重要特性,允许直接操作内存和实现动态内存管理。 结构体是一种构造数据类型,它可以将不同类型的数据组合成一个整体,形成自定义的数据结构。结构体的定义使用`struct`关键字,例如`struct student {int num; char name[20]; ...};`,但这个定义只描述了结构体的组织形式,并不分配内存。要使用结构体变量,需要额外的声明和内存分配,如`struct student s;`。 共用体(union)也是构造类型,它的特点是所有成员共享同一块内存区域,这意味着在任何时刻只能有一个成员有效。共用体的定义类似结构体,但成员会覆盖彼此,例如`union data {int i; char ch; float f;}`。定义共用体变量后,根据需要可以访问不同的成员,但请注意,访问其他成员时,之前成员的信息可能会丢失。 枚举类型(enum)是一种定义符号常量的构造类型,它可以为一组整型常量提供友好的名字。枚举定义如`enum Color {Red=1, Green, Blue};`,其中`Green`默认值为`2`,`Blue`默认值为`3`,可以自定义起始值。 在C语言中,内存管理是程序员的责任,包括动态内存分配(如`malloc`、`calloc`)和释放(如`free`)。指针和内存管理是C语言编程中的核心概念,理解和熟练运用这些知识对于编写高效、可靠的代码至关重要。"