指针学习笔记(1)——运算符*
来源:互联网 发布:java单例模式添加数据 编辑:程序博客网 时间:2024/06/05 05:19
1. 指针是一个地址,而指针变量时存放地址的变量。
2. 变量的指针就是变量的地址,存放变量地址的变量是指针变量,它用来指向另一个变量。
3. 一个指针变量只能指向同一个类型的变量。
4. *指针运算符,取指针所指向的对象的内容。
5. *和&两个运算符优先级相同,但按自右而左方向结合。
6. *和++两个运算符优先级相同,但按自右而左方向结合。 *p++等价于*(p++)
7. 指针变量作为函数参数,它的作用是将一个变量的地址传送到另一个函数中。
8. C语言中实参变量和形参变量之间的数据传递是单向的“值传递”方式。
9. 不可能通过调用函数来改变实参指针变量的值,但可以改变实参指针变量所指变量的值。
【交换两个数】
程序一:
void swap(int *p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
【分析】:通过交换两个形参指针变量所指向的对象,从而交换传递过来的两个实参指针变量所指向的对象,而实参指针变量所指向对象本身的值并没有发生改变。程序可实现功能。
程序二:
void swap(int *p1,int *p2)
{
int * temp;
*temp =*p1;
*p1=*p2;
*p2=temp;
}
【分析】:temp中并无确定的值,因此temp所指向的单元也是不可预见的,所以,对*temp赋值很可能给一个存储着重要数据的存储单元复制,这样会破坏系统的正常工作。
程序三:
void swap(int *p1,int *p2)
{
int * p;
p =p1;
p1=p2;
p2=p;
}
程序四:
void swap(int x,int y)
{
int temp;
temp=x;
x=y;
y=temp;
}
【分析】:程序三和程序四表面上看好像不一样,其实本质是一模一样的,仔细看笔记中的7 8 9 条就可以知道为什么不可以实现两个数的交换。
《C语言程序设计》
- 指针学习笔记(1)——运算符*
- c++学习笔记(三):指针(&和*)运算符
- c++学习笔记之运算符重载与智能指针
- 【C++学习笔记】递增/递减运算符和指针
- 【C++学习】——指针运算
- PHP学习笔记——运算符
- Python学习笔记 —— 运算符
- C#学习笔记——运算符
- FreeBASIC学习笔记——8.2 指针的类型与运算
- python 学习笔记1——数据类型、字符串、运算符
- PHP学习笔记(02)——运算符
- Swift学习笔记(4)——基本运算符
- 基本运算符—Swift学习笔记(五)
- 指针学习笔记(4)——指针与数组
- Objective-C学习笔记(六)——运算符之一元运算符
- 《C和指针》学习笔记三/语句 操作符和表达式 指针的运算/
- c++ primer plus 学习笔记(1)——复制构造函数与赋值运算符
- Android 智能指针学习笔记(二,完结) —— 强指针,弱指针
- 数据库的几个概念:主键,外键,索引,唯一索引
- Maven安装配置及WEB工程构建
- Mysql中存在索引但是不能使用索引的典型情况
- keepalived安装部署及Flume+keepalived高可用
- Problem of Precision(矩阵快速幂)
- 指针学习笔记(1)——运算符*
- 测试功能
- 【PAT】1093. Count PAT's (25)
- JS学习日记-one
- verilog笔试题
- poj 2499 binary tree (平衡二叉树)
- HDU - 2955 Robberies 01背包
- 红黑树实现
- Parallax:视差视图