C 语言 指针简介
指针是 C 语言中一个重要的概念,是 C 语言中一个重要特色,也是 C 语言的精髓、灵魂所在。正确而灵活的运用它,可以有效地表示复杂的数据结构;能动态分配内存;能方便地使用字符串;有效而方便地使用数组。掌握指针的应用,可以使程序简洁、紧凑和高效。
大约 40% 的选择题与指针有关。对指针的掌握程度可以反映编程能力。
大纲分析
- 变量的
地址和指针 - 指针变量的定义和指针变量的
基类型 - 给指针变量
赋值 - 对指针变量的
操作 - 函数之间
地址值的传递
地址
可以通过变量名访问内存。
内存的最小索引单元是字节(Byte)。可以把内存想象成一个超大的字符数组。我们知道,数组是通过下标来访问的,那么访问内存是否有类似的呢?
一个地址可以存放一个字节的数据。
地址 存放的值
……
10000 ‘I’
10001 ‘L’
10002 ‘O’
10003 ‘V’
10004 ‘E’
10005 520
10006
10007
10008
10009 ‘U’
……
变量名方便程序员。变量名对应着地址。
指针和指针变量。指针是地址的意思,C 语言里面有专门的指针变量用于存放指针。
指针变量占 4 个字节。
定义指针变量
类型名 *指针变量名
char *pa; // 定义一个指向字符型的指针变量
int *pb; // 定义一个指向整型的指针变量
我们使用 * 符号把 pa 和 pb 声明为指针。
取地址运算符和取值运算符
如果需要获取某个变量的地址,可以使用取地址运算符(&):
char *pa = &a;
int *pb = &b;
如果需要访问指针变量指向的数据,可以使用取值运算符(*):
printf("%c, %d\n", *pa, *pb);
直接通过变量来访问变量的值叫做直接访问,比如说 a = 3 ,通过 *pa = 3 称为间接访问。取值运算符也称为间接运算符。
#include <stdio.h>
int main() {
char a = 'G';
int b = 123;
char *pa = &a;
int *pb = &b;
printf("a = %c\n", *pa);
printf("b = %d\n", *pb);
// 通过指针间接访问
*pa = 'F';
*pb += 1;
printf("now a = %c\n", *pa);
printf("now b = %d\n", *pb);
// 指针变量所占字节
printf("sizeof a = %d\n", sizeof(pa));
printf("sizeof b = %d\n", sizeof(pb));
// 地址
printf("the address of a is %p\n", pa);
printf("the address of b is %p\n", pb);
return 0;
}
运行结果:
a = G
b = 123
now a = F
now b = 124
sizeof a = 4
sizeof b = 4
the address of a is 0118FA57
the address of b is 0118FA48
避免访问未初始化的指针
例如:
#include <stdio.h>
int main() {
int *a;
*a = 123;
return 0;
}
定义了一个整形指针却没有初始化。a 却实是一个指针,可是我们不知道它指向哪里。
本文深入解析C语言中的指针概念,阐述其在变量地址、动态内存分配、字符串操作及数组应用中的关键作用。文章强调了掌握指针对于提高编程效率的重要性,并通过实例演示如何定义、赋值和操作指针变量。

2144

被折叠的 条评论
为什么被折叠?



