### 如何学好C语言-指针 #### 概述 C语言作为一种广泛使用的编程语言,在计算机科学领域占据着极其重要的地位。其中,“指针”是C语言中的一个核心概念,掌握指针对于深入理解C语言乃至其他高级语言都有着至关重要的作用。本文将通过解析几个代码示例来介绍如何学习和掌握C语言中的指针概念。 #### 复习运算符 在学习指针之前,先复习一下C语言中的基本运算符,包括关系运算符、逻辑运算符、条件运算符以及逗号运算符。 1. **关系运算与逻辑运算**: 通过以下代码片段来复习关系运算符(如`>`、`<`)和逻辑运算符(如`||`)的使用: ```c #include "stdio.h" int main() { int a = 1, b = 2, m = 0, n = 0, k; printf("%d\n", m); k = (n = b > a) || (m = a < b); printf("%d\n", m); printf("%d,%d\n", k, m); return 0; } ``` 2. **条件运算与逗号运算**: 条件运算符(如`? :`)和逗号运算符(`,`)是C语言中非常实用的功能,可以帮助简化代码。例如: ```c #include "stdio.h" int main() { char a = 1, b = 3, c = 0; printf("%d", (a + b > a - b ? a++ : ++b, ++a, b + 5)); return 0; } ``` 上述代码展示了如何使用条件运算符和逗号运算符来实现复杂表达式的计算。 #### 复习函数 1. **带形参的返回函数值**: 函数不仅可以返回普通的整型或浮点型数据,还可以返回指针类型的数据。例如: ```c #include "stdio.h" char delay(char t); char delay(char t) { t++; return t; } int main() { char i = 8, k; if (i > delay(2)) { k = delay(3); i++; printf("k=%d,i=%d", k, i); } return 0; } ``` 2. **全局变量作为形参**: 当全局变量作为函数的形式参数时,需要注意的是,即使在函数内部修改了形参的值,也不会影响到全局变量的原始值。例如: ```c #include "stdio.h" void delay(int y); int y = 3; void delay(int y) { for (; y < 6; y++) ; printf("y1=%d\n", y); } int main() { int mm; delay(5); printf("y2=%d\n", y); mm = y++; printf("y3=%d\n", y); return 0; } ``` #### 指针数组 指针数组是一种特殊的数组类型,其每个元素都是一个指针。例如: ```c #include "stdio.h" int main() { char i = 0, *p[3] = {"wejlj", "dsag", "dsfads"}; for (; i < 3; i++) { printf("%c\n", *(p[i])); } return 0; } ``` #### 指针函数与函数指针的区别 1. **指针函数**: 指针函数是指返回值为指针类型的函数。这种函数通常用于返回某个内存地址,以便其他函数能够访问该地址指向的数据。例如: ```c #include "stdio.h" int* GetDate(int wk, int dy); int* GetDate(int wk, int dy) { static int calendar[5][7] = { {1, 2, 3, 4, 5, 6, 7}, {8, 9, 10, 11, 12, 13, 14}, {15, 16, 17, 18, 19, 20, 21}, {22, 23, 24, 25, 26, 27, 28}, {29, 30, 31, -1} }; return &calendar[wk - 1][dy - 1]; } int main() { int wk, dy; do { printf("Enter week(1-5) day(1-7)\n"); scanf("%d%d", &wk, &dy); } while (wk < 1 || wk > 5 || dy < 1 || dy > 7); printf("%d\n", *GetDate(wk, dy)); return 0; } ``` 2. **函数指针**: 函数指针则是一种可以存储函数地址的变量类型。与指针函数不同,函数指针本身并不执行任何函数调用操作,它只是保存了一个函数的地址。函数指针可以在程序运行时动态地指向不同的函数,从而实现对函数的灵活调用。例如: ```c #include "stdio.h" int (*fun)(int, int); int add(int x, int y) { return x + y; } int main() { fun = add; // 将add函数的地址赋值给fun int result = fun(3, 4); // 通过函数指针调用add函数 printf("Result: %d\n", result); return 0; } ``` 通过上述示例的学习和实践,我们可以更好地理解和掌握C语言中的指针概念及其应用。希望这些内容能帮助大家在学习C语言的过程中取得更好的进展。
剩余7页未读,继续阅读
- 粉丝: 5
- 资源: 921
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Arduino和Python的实时歌曲信息液晶显示屏展示系统.zip
- (源码)基于C++和C混合模式的操作系统开发项目.zip
- (源码)基于Arduino的全球天气监控系统.zip
- OpenCVForUnity2.6.0.unitypackage
- (源码)基于SimPy和贝叶斯优化的流程仿真系统.zip
- (源码)基于Java Web的个人信息管理系统.zip
- (源码)基于C++和OTL4的PostgreSQL数据库连接系统.zip
- (源码)基于ESP32和AWS IoT Core的室内温湿度监测系统.zip
- (源码)基于Arduino的I2C协议交通灯模拟系统.zip
- coco.names 文件