C语言复习1之指针
来源:互联网 发布:shell脚本编程 题目 编辑:程序博客网 时间:2024/06/05 17:22
1.变量的属性
c语言中变量的地址和值的概念,比如:
<span style="white-space:pre"></span> int x=1;<span style="white-space:pre"></span> printf("x value:%d\n",x);<span style="white-space:pre"></span> printf("x address:%d\n",&x);
输出:
x value:1x address:1638212Press any key to continue
假设 int *p=&a, 即int *p; p=&a;
则变量a的指针指的是变量a的地址;
p为指针变量,p的值即是指针变量的值,即变量a的地址;
*p为指针变量p指向的变量,即a,值跟a一样;
可能画图更好理解
代码实例:
#include <stdio.h>int main(){<span style="white-space:pre"></span> int x=1;<span style="white-space:pre"></span> printf("x value:%d\n",x);<span style="white-space:pre"></span> printf("x address:%d\n",&x); int *y=&x;<span style="white-space:pre"></span> printf("y Pointer:%d\n",*y);<span style="white-space:pre"></span> printf("y value:%d\n",y);<span style="white-space:pre"></span> printf("y address:%d\n",&y);<span style="white-space:pre"></span> <span style="white-space:pre"></span> int *z;<span style="white-space:pre"></span> z=&x;<span style="white-space:pre"></span> printf("z Pointer:%d\n",*z);<span style="white-space:pre"></span> printf("z value:%d\n",z);<span style="white-space:pre"></span> printf("z address:%d\n",&z);<span style="white-space:pre"></span> return 0;}
输出:
x value:1x address:1638212y Pointer:1y value:1638212y address:1638208z Pointer:1z value:1638212z address:1638204Press any key to continue
3.指针的指针:
指针的指针:如果一个指针变量存放的又是另一个指针变量的地址, 则称这个指针变量为指向指针的指针变量。
假设
int **m; m=&y;
指针的指针m即指针y的地址;
*m为指针的指针m指向的变量y的值;
**m为指针的指针m指向的变量y所指向的变量的值:x
&m为指针的指针m的地址。
代码说明:
#include <stdio.h>int main(){<span style="white-space:pre"></span> int x=1;<span style="white-space:pre"></span> printf("x value:%d\n",x);<span style="white-space:pre"></span> printf("x address:%d\n",&x); int *y=&x;<span style="white-space:pre"></span> printf("y Pointer:%d\n",*y);<span style="white-space:pre"></span> printf("y value:%d\n",y);<span style="white-space:pre"></span> printf("y address:%d\n",&y);<span style="white-space:pre"></span> <span style="white-space:pre"></span> int *z;<span style="white-space:pre"></span> z=&x;<span style="white-space:pre"></span> printf("z Pointer:%d\n",*z);<span style="white-space:pre"></span> printf("z value:%d\n",z);<span style="white-space:pre"></span> printf("z address:%d\n",&z); <span style="white-space:pre"></span> int **m;<span style="white-space:pre"></span> m=&y;<span style="white-space:pre"></span> printf("**m Pointer Pointer:%d\n",**m);<span style="white-space:pre"></span> printf("*m Pointer:%d\n",*m);<span style="white-space:pre"></span> printf("m value:%d\n",m);<span style="white-space:pre"></span> printf("&m address:%d\n",&m);<span style="white-space:pre"></span> return 0;}
输出:
x value:1x address:1638212y Pointer:1y value:1638212y address:1638208z Pointer:1z value:1638212z address:1638204**m Pointer Pointer:1*m Pointer:1638212m value:1638208&m address:1638200Press any key to continue
4.指针数组:
数组的指针即数组的地址,假设:
int a[]={1,2,3,4,5}; int*p; p=a;则:
a[5]为数组,数组的收地址为a
将数组地址a的值付给数组指针变量p,则p跟a有一样的值.于是有:
p[i]=a[i]
*(p+i)=a[i]
&p[i]=&a[i]=p+i
代码实例:
#include <stdio.h>void parray(){ printf("Hello pArray\n"); int a[]={1,2,3,4,5}; int*p; p=a; printf("a=%d\n",a); printf("p=%d\n",p); for(int i=0;i<=4;i++){ printf("a[%d]=%d\n",i,a[i]); printf("p[%d]=%d\n",i,p[i]); printf("*(p+%d)=%d\n",i,*(p+i)); printf("p+%d=%d\n",i,p+i); printf("&(p[%d])=%d\n",i,&(p[i])); //printf("p[%d]=%d\n",i,p[i]); =>error //printf("&(p+%d)=%d\n",i,&(p+i)); =>error }}输出:
Hello pArraya=1638096p=1638096a[0]=1p[0]=1*(p+0)=1p+0=1638096&(p[0])=1638096a[1]=2p[1]=2*(p+1)=2p+1=1638100&(p[1])=1638100a[2]=3p[2]=3*(p+2)=3p+2=1638104&(p[2])=1638104a[3]=4p[3]=4*(p+3)=4p+3=1638108&(p[3])=1638108a[4]=5p[4]=5*(p+4)=5p+4=1638112&(p[4])=1638112Press any key to continue
5.多维数组指针和函数指针待续。
0 0
- C语言复习1之指针
- C语言之指针复习
- C语言复习之指针数组
- C语言基础复习之指针
- 10.28 c语言复习之指针相关
- [复习C语言]指针
- C语言复习-指针
- C语言指针复习
- 复习c语言:指针
- C语言复习 -- 多重指针
- c语言复习 指针学习
- C语言复习 多级指针
- c语言指针的复习
- C语言复习之结构体和指针
- C语言之指针(1)
- c语言复习笔记--指针定义
- C语言复习 --指针表示一个字符串
- C语言复习 指针和数组
- knockoutJS关于绑定语法
- Android判断网络是否打开,并打开设置网络界面
- CentOS 7安装MySQL
- Play框架中缓存的应用
- char 转wchar_t 及wchar_t转char
- C语言复习1之指针
- 分享一百多套开发视频教程的下载地址
- WCF 服务 ServiceBehavior 和OperationBehavior 属性
- osg动画资料地址
- UISegmengedControl - 分段控制器
- 【Android】【转】查看内存
- 使用C++类成员函数作为回调函数
- Eclipse 项目名称前出现大红色叹号分析
- CentOS 安装Java环境