指针学习笔记(1)——运算符*
2015-10-22 20:15
225 查看
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语言程序设计》
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语言程序设计》
相关文章推荐
- 关于指针的一些事情
- Lua中关系运算符的使用教程
- Lua学习笔记之运算符和表达式
- C#运算符重载用法实例分析
- C# Pointer指针应用实例简述
- sql server 2008中的apply运算符使用方法
- C#中38个常用运算符的优先级的划分和理解
- C++智能指针实例详解
- C++指向函数的指针实例解析
- 关于c语言指针的两处小tip分享
- 浅析iterator与指针的区别
- 探讨C++中数组名与指针的用法比较分析
- 详解C++中的指针、数组指针与函数指针
- C++中字符串以及数组和指针的互相使用讲解
- C语言安全之数组长度与指针实例解析
- C++中指向对象的常指针与指向常对象的指针详解
- 指向变量的常指针与指向常变量的指针详细解析
- C#通过指针实现快速拷贝的方法
- C#基础语法:as 运算符使用实例
- 与MSSQL对比学习MYSQL的心得(五)--运算符