博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言之指针
阅读量:5344 次
发布时间:2019-06-15

本文共 1327 字,大约阅读时间需要 4 分钟。

题记:因为想系统学一下数据结构,故先复习C语言的指针。

一、指针的作用

1、表示一些复杂的数据结构;

2、能直接访问硬件;

3、快速的传递数据,减少了内存的损耗;

4、能使函数返回一个以上的值;

5、能够方便的处理字符串。

二、指针的定义

1、指针就是地址,地址就是指针;

2、指针变量就是存放内存单元编号的变量,或者说指针变量就是存放地址的变量;
3、指针和指针变量是两个不同的概念。通常我们叙述是会把指针变量简称为指针,实际上他们的含义并不一样。

三、指针的常见错误

# include 
int main(void){ int * p; static int i = 5; *p = i; //错误,因为P中的值是一个垃圾值,使P指向了一个系统并未分配的值,不能访问通过*p访问该地址的值 printf("%d\n", *p); return 0;}

四、使函数返回一个以上的值

看一个简单的例子,调用函数来交换两个变量的值:

/*	2016年8月31日21:28:47	交换两个变量的数值*/#include 
void change(int * x, int * y);int main(void){ int x = 1; int y = 2; change(&x, &y); printf("x = %d y = %d\n",x, y); //运行结果:x = 2 y = 1 return 0;}void change(int * x, int * y){ int t; t = *x; *x = *y; *y = t; return;}
如果调用函数利用return只能得到一个返回值,而使用指针变量做形参则可以返回多个变量的值。

注意下面两个程序不能完成交换两个变量的值的功能:

#include 
void change(int x, int y);int main(void){ int x = 1; int y = 2; change(x, y); printf("x = %d y = %d\n",x, y); return 0;}void change(int x, int y) //不能完成互换功能,只是局部变量的值交换了,不会影响全局变量的值{ int t; t = x; x = y; y = t; return;}

#include 
void change(int * x, int * y);int main(void){ int x = 1; int y = 2; change(&x, &y); printf("x = %d y = %d\n",x, y); return 0;}void change(int * p, int * q) //不能完成互换功能,只是交换了p和q的地址,不会改变x和y的值{ int * t; t = p; p = q; q = t; return;}

转载于:https://www.cnblogs.com/yzy-blogs/p/6597337.html

你可能感兴趣的文章
Android轻量级的开源缓存框架ASimpleCache
查看>>
他山之石:加载图片的一个小问题
查看>>
shell - 常识
查看>>
mssql sqlserver 使用sql脚本 清空所有数据库表数据的方法分享
查看>>
分层图最短路【bzoj2763】: [JLOI2011]飞行路线
查看>>
linux下编译复数类型引发的错误:expected unqualified-id before '(' token
查看>>
codeforces 1041A Heist
查看>>
Spring Cloud Stream消费失败后的处理策略(三):使用DLQ队列(RabbitMQ)
查看>>
bzoj1048 [HAOI2007]分割矩阵
查看>>
Java中的编码
查看>>
PKUWC2018 5/6
查看>>
As-If-Serial 理解
查看>>
洛谷P1005 矩阵取数游戏
查看>>
在Silverlight中使用HierarchicalDataTemplate为TreeView实现递归树状结构
查看>>
无线通信基础(一):无线网络演进
查看>>
如何在工作中快速成长?阿里资深架构师给工程师的10个简单技巧
查看>>
WebSocket 时时双向数据,前后端(聊天室)
查看>>
关于python中带下划线的变量和函数 的意义
查看>>
linux清空日志文件内容 (转)
查看>>
安卓第十三天笔记-服务(Service)
查看>>