• 多维数组与指针


    1.指向数组元素的指针变量

    实例代码:

    #include<iostream>
    using namespace std;
    int main(){
    	int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
    	int *p;
    	for(p=a[0];p<a[0]+12;p++){
    		cout<<*p<<" ";
    	}
    	cout<<endl;
    	return 0;
    } 


    p=a[0]等价于p=&a[0][0],而不可以使p=a。因为,a指向的是a[0](二维数组的首行,即指向一个一维数组);而a[0]是指向a[0][0](即二维数组中的第一个元素)

    #include<iostream>
    using namespace std;
    int main(){
    	int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
    	int *p;
    	for(p=&a[0][0];p<a[0]+12;p++){
    		cout<<*p<<" ";
    	}
    	cout<<endl;
    	return 0;
    } 


    2.指向由m个元素组成的一维数组的指针变量

    我们可以定义一个指针变量,它不指向一个整型变量,而是指向一个包含m个元素的一维数组。


    int (*p)[4]表示p是一个指针变量,它指向包含4个整形元素的一位数组


    int (* p)[4]=& a[0]等价于 int (* p)[4]=a

    即,使p指向a[0],则p+1不是指向a[0][1],而是指向a[1],p的增值以一位数组的长度为单位。

    #include<iostream>
    using namespace std;
    int main(){
    	int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
    	int (*p)[4];
    	int i,j;
    	p=a;
    	for(i=0;i<3;i++){
    		for(j=0;j<4;j++){
    		    cout<<*(*(p+i)+j)<<" ";	
    		}
    	}
    	cout<<endl;
    	return 0;
    } 
    
    
    


    其中*(*(p+i)+j)就等价于p[i][j];

    #include<iostream>
    using namespace std;
    int main(){
    	int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
    	int (*p)[4];
    	int i,j;
    	p=&a[0];
    	for(i=0;i<3;i++){
    		for(j=0;j<4;j++){
    		    cout<<p[i][j]<<" ";	
    		}
    	}
    	cout<<endl;
    	return 0;
    
  • 相关阅读:
    原生ajax书写
    java 中的instanceof
    Leetcode-Python3
    快速读入挂
    HDU 6044 Limited Permutation(2017多校)【计数 快速读入挂 线性逆元】
    HDU 6015 Colorful Tree(2017多校)
    HDU 6034 【贪心】
    POJ 3415 Common Substrings 【长度不小于 K 的公共子串的个数】
    POJ Football Game 【NIMK博弈 && Bash 博弈】
    2018
  • 原文地址:https://www.cnblogs.com/aukle/p/3217627.html
Copyright © 2020-2023  润新知