c基础学习 - 指针
来源:互联网 发布:ubuntu java安装在哪好 编辑:程序博客网 时间:2024/05/22 09:07
1. 基础
程序输出为:
程序输出为:
程序输出为:
程序输出:
程序输出:
程序输出:
int i = 10;int *p = &i; /* 定义一个指向int类型的指针p,并把i的地址赋给它 */printf("i=%d, &i=%p, p=%p, *p=%d \n", i, &i, p, *p);
程序输出为:
i=10, &i=0x22ac44, p=0x22ac44, *p=10
&i是i的地址,指针p保存了i的地址,*p是取指针的值,也就是i的值。
2. 指针类型的参数和返回值
/* 定义一个返回值为指向int类型的指针的函数 */int *swap(int *px, int *py){int temp;temp = *px;*px = *py;*py = temp;return px;}int main(void){int i = 10;int j = 20;int *m = swap(&i, &j);printf("i=%d, j=%d, *m=%d \n", i, j, *m);return 0;}
程序输出为:
i=20, j=10, *m=20
return px相当于定义了一个int类型的临时指针来保存px,然后再把这个指针赋给指针m,所以m的指向和px是一样的。
3. 指针和数组
int a[5] = {1, 2, 3, 4, 5};int *pa = &a[0];printf("*pa=%d pa=%p a=%p \n", *pa, pa, a);pa++;printf("*pa=%d \n", *pa);
程序输出为:
*pa=1 pa=0x22ac28 a=0x22ac28
*pa=2
- 数组名作为参数传递时,实际传递的是第一个元素的指针,从上面的输入可以看出。
- 指针pa++是让pa指向下一个元素。
4. 指针与const
int n = 30;const int *x = &n;int const *y = &n;printf("*x=%d y++=%p \n", *x, y++);
程序输出:
*x=30 y++=0x22ac1c
const int 和 int const是一样的,都是定义一个指向const int类型的指针。所以*x是不可变的,不能执行(*x)++这样的操作,但是x是可变的,可以执行x++的操作。
int * const z = &n;printf("++(*z)=%d \n", ++(*z));
程序输出:
++(*z)=31
上面定义的是一个指向int类型的const指针,所以z是不可变的,但是指针的值是可变的。要定义都不可变的指针就是:
int const * const pz;
5. 指向指针的指针
int c = 40;int *pc = &c;int **ppc = &pc;printf("&pc=%p ppc=%p *ppc=%p **ppc=%d", &pc, ppc, *ppc, **ppc);
程序输出:
&pc=0x22ac0c ppc=0x22ac0c *ppc=0x22ac10 **ppc=40
*ppc取的是pc的值,而**ppc就相当于*pc,就是c的值。
- c基础学习 - 指针
- 数据结构学习笔记之C指针基础
- IOS学习---C语言基础学习7(指针)
- c语言 指针基础
- C指针基础
- C语言指针基础
- C 指针 基础知识点
- C基础指针注意事项
- C指针基础复习
- C语言基础 指针
- C语言基础 --指针
- C/C++指针基础
- C/C++基础----指针
- C基础:指针高级
- C语言基础-指针
- C语言指针基础
- C语言--指针基础
- C语言基础--指针
- Apache Shiro 架构
- c#查询部署机器的Office应用程序的版本
- undefined reference to `clock_gettime' 链接错误问题解决
- 一个基于HTML与JavaScript的Wizard演示
- python http
- c基础学习 - 指针
- [Bluetooth]蓝牙协议栈构架
- 关于进段时间的工作总结
- c#调用C接口时指针参数的接入
- .net中文化和区域属性CultureInfo对数据转换的影响
- 配置windows双网卡
- 腾讯 sdk
- 设计模式笔记之---代理模式
- [Android]手机通过USB绑定共享电脑网络