c语言期末指针知识点
时间: 2025-01-01 19:31:24 浏览: 8
### C语言指针知识点总结
#### 三维指针概念及其应用
在C语言中,指针是一个变量,其值为另一个变量的地址。可以有指向不同类型的指针,如`char *`, `int *`等。对于多级指针而言,例如`char **p`表示的是一个指向字符指针的指针,在实际编程中有广泛应用场景[^2]。
```cpp
void test(char **p) {
// 函数体
}
```
上述代码展示了如何定义接受二级指针作为参数的方法声明方式。这里`test`接收了一个指向字符指针(`char*`)的指针(`char**`)。
#### 基本操作符:取址&和解引用*
- 取址运算符`&`: 获取某个变量存储位置对应的内存地址。
- 解引用运算符`*`: 访问由指针所指向的对象的具体数值。
考虑如下实例:
```cpp
#include <stdio.h>
int main(){
int value = 10;
int *ptr_value=&value;
printf("Value of ptr_value variable:%u\n",ptr_value);
printf("*ptr_value contains:%d\n",*ptr_value);
return 0;
}
```
这段简单的例子说明了怎样创建并初始化一个整型指针以及如何打印该指针对应的实际内容而非仅仅是指向的位置编号[^1]。
#### 数组名作指针使用
当提到数组时,默认情况下它的名字就代表首元素所在处的地址;因此可以直接当作相应类型的一维指针来处理。比如下面的例子显示了遍历整个整形数组的过程:
```cpp
for (size_t i=0;i<array_length;++i){
*(arr+i)=some_initialization_function(i);
}
```
此段代码利用加法偏移量访问各个成员而无需显式索引下标语法[]形式。
#### 动态分配空间malloc/free
为了实现更灵活的数据管理机制,C提供了动态申请堆区资源的功能——通过调用库函数`malloc()`获取指定大小连续字节块,并返回这块区域起始点的通用指针(void*)给用户自行转换成所需特定类别之后再加以运用;完成任务后记得释放这些临时占用的空间以免造成泄露现象发生,这可以通过free()达成目的.
```cpp
// 分配一块能容纳五个浮点数的地方
float *dynamic_array=(float *)malloc(5*sizeof(float));
if(dynamic_array!=NULL){ /* 成功 */ }
else{ /* 失败 */}
...
// 使用完毕立即清理现场
free(dynamic_array);
```
以上片段体现了安全有效地请求额外工作区间同时注意错误检测的重要性。
#### 指针与字符串处理
由于ASCII编码体系里单个字符本质上就是8bit无符号整数,所以可以用字符数组或者字符指针的方式表达固定长度串或不定长序列。特别地,标准I/O接口中的gets/puts系列均是以null终止标记结尾的文本流读写工具集的一部分。
```cpp
const char greeting[]="Hello";
printf("%s",greeting); // 输出 "Hello"
```
此处展示了一种常量字符串字面量赋值方法连同后续输出语句一起构成完整的短消息发送流程。
阅读全文