2012-07-18-关于指针
来源:互联网 发布:淘宝网一元秒杀在哪里 编辑:程序博客网 时间:2024/05/17 22:58
一、数组指针与数组指针变量
int a[] = {1, 2, 3, 4};
int *p = a;
那么 a 是数组指针,p 是数组指针变量. a 不能变,p 可变.
访问数组元素的三种方法:
1. p = a; *p; ++p;
2. i=0; *(p+i); ++i;
3. p[i++];
引用一维数组元素的四种方法:a[i], p[i], *(a+i), *(p+i).
二、二维数组与指针
掌握以下三个概念:二维数组行首地址、行地址、元素地址.
若 int a[][2] = {11, 12, 21, 22, 31, 32};
则:
1. 行首地址:a[i], &a[i][0]
2. 行地址:a+i, &a[i]
3. 元素地址:a[i] + j, *(a+i) + j, &a[i][0] + j, &a[i][j].
其中,a[i] = &a[i][0] = a + i = &a[i]. 但行地址和行首地址不是同一种类型,要将行地址赋值给数组指针变量需要强制类型转换:
int * p = a + 1; // error
int * p = (int *) (a + 1); // ok.
三、综合实例:两种方式打印行地址,三种方式打印行首地址,四种方式打印元素。
//// pointer-and-address.cpp// 2012-07-18-cpp-test//// Created by bh10 on 12-7-18.// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.//#include <iostream>using namespace std;#define ps(x) cout << #x " = " << x << endl#define pInfo(x) cout << "-------------------" << x << "----------------------" << endl#define p(x) cout << x#define cr cout << endlint main() { int a[][3] = {11, 12, 13, 21, 22, 23}; int dim1Len = sizeof a / sizeof(a[0]); int dim2Len = sizeof a[0] / sizeof(a[0][0]); // two ways to get row address. pInfo("row address!"); for (int i=0; i<dim1Len; ++i) { ps(a + i); ps(&a[i]); } pInfo("end"); //three ways to print head addresses of each row. pInfo("row head addresses!"); for (int i=0; i<dim1Len; ++i) { ps(&a[i][0]); ps(a[i]); ps(*(a + i)); } pInfo("end"); // four ways to print each elems. pInfo("elems"); for (int i=0; i<dim1Len; ++i) { for (int j=0; j<dim2Len; ++j) { ps(*(a[i] + j)); ps(*(*(a+i) + j)); ps(*(&a[i][0] + j)); ps(a[i][j]); } } pInfo("end"); return 0;}
- 2012-07-18-关于指针
- 关于指针《指针&数组》
- 关于指针的指针
- 关于指针,指针参数
- 关于指针
- 关于指针
- 关于指针
- 关于指针
- 关于指针
- 关于指针
- 关于指针
- 关于指针
- 关于指针
- 关于指针
- 关于指针
- 关于指针
- 关于指针
- 关于指针
- 前20位Googler今安在?
- 一些关于Hibernate问题 many-to-many pojo inverse Date.valueOf("2012-2-2");
- Android 监控网络状态
- 用VC++建立Service服务应用程序
- Android模拟 HTTP multipart/form-data 请求协议信息实现图片上传
- 2012-07-18-关于指针
- OracleEBS各模块中文名称及英文缩写
- EBS 各模块数据传送至总帐 需要运行的请求
- uva_10801 Lift hopping
- 常用的sql语句,整理自csdn论坛
- 黑马程序员_多线程
- 安卓市场
- 隐藏软件盘
- Java基础知识