首页/文章/ 详情

《C语言程序设计》第七章 指针

5天前浏览108
本章讲完,课程也就宣告结束了。我们学院的考试内容就到本章截止!本课程的核心内容是第五章和第六章!虽然在我们学院的教学过程中,本章的内容只需要大概了解。本章涉及的知识点会比较深,需要反复实践才能掌握,不过指针确实是C语言的特色。2025年4月,新增本章节内容!

带病坚持上课会让病情加重,之前腰就已经非常痛了,带着护腰上完一周课后,结果病情彻底爆发出来。于是只能休息,痛苦的休息。人要趁着健康的时候多积累能力,否则很多时候我们只能无奈的接受。2018年的时候,我就带病坚持上了一学期,这次不敢这么做了,趁着清明假期好好调整!
图片
指针是C语言中最强大但也最令人困惑的概念之一。我将从基础到深入逐步讲解指针的概念,本人用的很少很少,但作为一个重要知识点必须要讲。

一、指针基础概念

1. 什么是指针
指针是一个变量,其值为另一个变量的内存地址。
int var = 20;    // 实际变量
int *ptr = &var; // 指针变量,存储var的地址
2. 指针操作符
`&` (取地址运算符):获取变量的内存地址
`*` (解引用运算符):访问指针所指向地址的值

二、指针声明与初始化

1. 声明指针
int *ip;     // 整型指针
double *dp;  // 双精度浮点指针
char *cp;    // 字符指针
2. 指针初始化
int x = 10;
int *p = &x;  // p指向x的地址
// 或者分开写
int *p;
p = &x;

三、指针的使用

1. 通过指针访问值
int value = *p;  // 获取p指向地址的值
*p = 30;        // 修改p指向地址的值
2. 指针与数组
int arr[5] = {1, 2, 3, 4, 5};
int *p = arr;   // 指向数组第一个元素
// 访问数组元素
printf("%d", *p);      // 第一个元素
printf("%d", *(p+1));  // 第二个元素

四、指针的高级用法

1. 指针的指针
int x = 10;
int *p = &x;
int **pp = &p;  // 指向指针的指针
printf("%d", **pp);  // 输出10
2. 指针与函数
传递指针到函数
void increment(int *p) {
    (*p)++;
}
int main() {
    int x = 5;
    increment(&x);
    printf("%d", x);  // 输出6
    return 0;
}
返回指针的函数
int* getPointer(int *p) {
    return p;
}
3. 动态内存分配
int *arr = (int*)malloc(5 * sizeof(int));  // 动态分配数组
// 使用数组...
free(arr);  // 释放内存
五、指针的注意事项
1. 野指针:未初始化的指针可能指向任意内存地址
   int *p;  // 野指针
   *p = 10; // 危险操作!
2. 空指针:使用NULL或nullptr表示不指向任何地址
   int *p = NULL;
   if (p != NULL) {
       *p = 10;
   }
3. 指针运算:指针可以进行加减运算,但要注意边界
   int arr[5] = {1, 2, 3, 4, 5};
   int *p = arr;
   p++;  // 现在指向arr[1]
六、指针与字符串
在C语言中,字符串通常用字符指针表示:
char *str = "Hello";
// 或者
char str2[] = "World";
char *p = str2;
指针是C语言的核心概念,理解指针对于掌握C语言至关重要。需要多练习才能熟练掌握指针的使用。

在我们学院,大一学生学的是最努力的,不知为何到了大二就开始严重懈怠了。看着学生们的成长路径,确实很着急!课堂上三番五次的劝说如同泥牛入海!本章完结

修订记录

20250310 完成初稿;

20250405 修订内容;


来源:通信工程师专辑
科普
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-04-09
最近编辑:5天前
算法工匠
博士后 | 高级工程师 诚信做事 认真讲课 传播知识
获赞 408粉丝 2662文章 429课程 40
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈