C语言入门:指针与字符串详解

需积分: 10 0 下载量 120 浏览量 更新于2024-08-20 收藏 2.31MB PPT 举报
"这篇资料主要介绍了C语言中的字符串与指针以及指针数组的概念和使用方法,由内蒙古科技大学工程训练中心的徐国海讲解。" 在C语言中,字符串与指针之间的关系密切。字符串在C语言中实际上是字符数组,通常以空字符'\0'作为结束标志。例如,`char *p = "abc"`定义了一个指针变量p,并让它指向字符串"abc"的首字符'a'。在C语言中,通过指针可以访问和操作字符串。在给出的示例中,`printf("%c", *(p+1))`会打印出字符串中的第二个字符'b',因为`(p+1)`将指针p向后移动一位,指向下一个字符。 指针数组则是指针变量的数组,它允许我们存储多个指针。在描述中的例子`int *p[] = {"def", "av", "cccd"}`中,`p`是一个指针数组,它的每个元素都是一个指向字符串的指针。`printf("%s", p[1])`会打印出数组中的第二个元素,即字符串"av",因为`p[1]`表示访问数组的第二个元素,即指向字符串"av"的指针。 指针在C语言中扮演着核心角色,它们存储的是变量的内存地址,这使得可以直接访问和修改变量的值。指针变量的定义遵循以下格式:`基类型*指针变量名`。这里的基类型是指针所指向的变量类型,例如`int *p`表示p是一个指向整型变量的指针。在C语言中,使用`&`运算符可以获取变量的地址,如`p = &j;`使指针p指向变量j的地址。 指针变量可以有三种赋值方式:1) 初始化为`NULL`或`0`,表示指针没有指向任何有效地址;2) 赋予某个变量的地址,如`p1 = &a;`;3) 指针之间互相赋值,如`p2 = p1;`。定义指针变量时,可以同时进行初始化,如`inta, *p = &a;`。 在使用指向简单变量的指针时,`*`运算符用于访问指针所指向的变量的值。例如,`int i, *p = &i;`定义了一个整型变量i和一个指向i的指针p。通过`scanf("%d", p)`可以将输入的值赋予i,而`printf("%d", *p)`则会打印出i的值。这里的`*p`等价于变量i,因为`*`运算符起到了“解引用”的作用,让我们可以直接通过指针访问到它所指向的变量的值。 总结来说,C语言中的指针提供了对内存直接操作的能力,使得我们可以高效地处理数据结构和算法。字符串与指针的结合使得字符串操作更加灵活,而指针数组则为我们处理多个数据项提供了便利。理解并熟练掌握这些概念是成为C语言程序员的关键。