C++指针数组与数组指针的比较
2016-05-23 18:06
344 查看
// test1.cpp : 定义控制台应用程序的入口点。 最简单的辨别方式就是看函数名前面的指针号"*"有没有被括号()包含,如果被包含就是函数指针,反之则是指针函数。 #include "stdafx.h" #include "iostream" using namespace std; void main() { int m[3][5]={14,13,12,11,10,9,8,7,6,5,4,3,2,1,0}; int (*p)[5]; //数组指针,理解为指向数组的指针,指向一维数组,亦称行指针,每个一维数组有 个元素 //其中n值要求与二维数组的列一致 int i,j; int *q[3]; //指针数组, q是数组,数组元素是指针,3个int指针,记住行首地址即可 p=m; //p是指针,可以直接指向二维数组 printf("数组指针输出元素:\n"); for(i=0;i<3;i++) { for(j=0;j<5;j++) { printf("%3d ",*(*(p+i)+j)); //注意元素值的取值方式 } printf("\n"); } printf("\n另一种遍历方式:\n"); for(i=0;i<3;i++,p++) //p可看成是行指针,取值方式类似*(*(p+i)+j)) { printf("%3d ",**p); //每一行的第一个元素 printf("%3d ",*(*p+1)); //每一行的第二个元素 printf("%3d ",*(*p+2)); //每一行的第三个元素 printf("%3d ",*(*p+3)); //每一行的第四个元素 printf("%3d ",*(*p+4)); //每一行的第四个元素 printf("\n"); } printf("\n----------------指针数组输出元素-----------------\n"); for(i=0;i<3;i++) q[i]=m[i]; //q是数组,里面的元素是指针即,元素q[i]是指针。初始化时将每个元素(指针) //指向数组a每行元素的首地址即可 for(i=0;i<3;i++) { for(j=0;j<5;j++) { printf("%3d ",q[i][j]); //q[i][j]可换成*(q[i]+j) } printf("\n"); } printf("\n--------------第二种遍历方式---------------------:\n"); q[0]=m[0]; //记住第一行元素的首地址 for(i=0;i<3;i++) { for(j=0;j<5;j++) { printf("%3d ",*(q[0]+5*i+j));//首地址+第i行第j列元素的址,再取值即可 } printf("\n"); } printf("\n"); }
相关文章推荐
- TinyXML2 Tutorial
- c++语言 如何计算二维数组行数和列数
- C++ vector用法
- c++第七次上机作业
- 山东省第六届ACM大学生程序设计竞赛-Square Number(完全平方数)
- leetcode 83 Remove Duplicates from Sorted List C++
- Java与C++的区别
- c中符号位扩展
- c++晚捆绑的实现机制
- C++值传递、引用传递、指针变量传递参数的比较
- leetcode 231 Power of Two C++
- C++ primer plus 第14章习题
- leetcode 263 Ugly Number C++
- C++ STL--deque用法详解
- C++作业6
- C++多态的实现及原理详细解析
- C++指针与数组
- C++基本概念和常识
- C++获取当前进程所占内存
- 在 OS X 中安裝 GNU GCC 以及使用 bits/stdc++.h 头文件 Policy-Based Data Structure