[C学习]指针与数组
来源:互联网 发布:网络连不上是什么原因 编辑:程序博客网 时间:2024/05/01 03:44
变量的地址就是变量的指针,存放变量地址的变量就是指针变量.为了表示指针变量和它所指向的变量的关系,用"*"来表示指向.
----------------------------
1>指针的定义
基类型 *指针变量名;
如:int *p;
p: 是指针变量中存放的值,它是一个地址,指向另一个变量的地址.
*P: 是指向变量里存放的值.
&p:是指针变量本身的地址.
注:指针变量必须指定基类型,而一个指针变量只能指向同一个类型的变量.如只有整型变量的地址才或可以放到指向整型的指针中.
------------------------------
2>指针变量的引用
指针变量中只能存放地址,不能将其非地址类型的数据赋给一个指针变量.
*:指针运算符,(或是"间接运算符")
&:取地址运算符
a>运算符"&"只能作用于内存中体现地址的对象,即在内存中为该对象分配存储空间,如变量,数组元素.而&(x+3)和&5则是非法的.
b>取寄存器register变量的地址也是非法的,register变量没有存放在内存中,而是在CPU的寄存器中.没有内存地址.
c>单目运算符*将它的操作数当作为最终目标的地址来对待,并取这个地址里的内容.
----------------------------
指针的应用:
3>指针变量作为函数参数:作用是将一个变量的地址传递到另一个函数中
注意:运算符*和&与!,++,--相同,是自右向左结合.
*p++与(*P)++的比较:
*P++:先作++,再取*,所以先取p的值(一个地址),取*,得这个地址的值,再对p进行++,即下移一 个单位.
(*P)++:括号内的优先级最高,即先取p地址里的值,再将这个值++.p本身不变化.
举例说明:swap(,)几种情况-----交换值
a>最常见的值传递,形参不影响实参的.
swap(int x, int y) { int temp; temp=x; x=y; y=temp}//swap(10,20)还是10,20
swap(int *x, int *y) {int temp; temp =*x; *x=*y;*y=temp}//变换,变成 20,10
swap(int *x, int *y) {int *temp ; *temp=*x;*x=*y;*y=*temp}//变换,变成20,10
swap(int *x,int *y) { int * temp; temp=x; x=y; y=temp}//这个的值没有变化,但x,y指向地址变化
会画如上的内存变化过程.
- [C学习]指针与数组
- [C学习]指针与数组
- [C学习]指针与数组
- [C学习]指针与数组
- C/C学习笔记/指针与数组
- C/C++学习笔记:指针与数组
- c数组与指针学习笔记
- C语言学习大纲--数组与指针
- C语言--数组与指针的学习
- C语言数组与指针学习总结
- C语言指针学习(二) ---- 指针与数组
- C语言学习(六)指针2 数组与指针
- C和指针 学习笔记-3.数组与指针
- C语言学习篇-9指针运算、指针与数组
- C语言学习——指针与数组、空指针
- C数组与指针
- c 指针与数组
- C 数组与指针
- 关于“这怎么可能”的思考...
- 对于交叉表的实现及多重表头的应用
- soap和http get获取qq在线webservice服务
- VS2005 无法创建或打开“智能设备”项目的一个问题的解决方法
- C++new的用法
- [C学习]指针与数组
- Notice: Undefined index: ... 问题的解决方案
- 限制用户重复登录
- 通过http-Get请求调用Web Service (C#)
- if you are starting study linux ,My sugguests for you are as below:
- 生活中的一些哲理名言
- jsp显示静态图片
- 【ABAP】在ALV 使用On_F4的事件例程
- 色度采样