c++17(26)-数组、二维数组的指针、指向数组的指针、指向数组的指针的指针
生活随笔
收集整理的這篇文章主要介紹了
c++17(26)-数组、二维数组的指针、指向数组的指针、指向数组的指针的指针
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
#include <iostream>
#include <string.h>
using namespace std;void setC1(int a[],int size){//a實(shí)質(zhì)是一個(gè)指針,指向數(shù)組for (int i=0;i<size;i++){a[i]=i;}
}void setC2(int (*a)[4],int i,int j){for (int jj=0;jj<j;jj++){*(*(a+i)+jj)=*(*(a+i)+jj)*10; }
}
void setC3(int *a,int i,int j){for (int jj=0;jj<j;jj++){*(a+j*i+jj)=*(a+j*i+jj)*10; }
}void setC4(int (*a)[],int j){for (int jj=0;jj<j;jj++){(*a)[jj]*=10;}
}void setC5(int (*a)[],int i,int myj){int (*x)[myj]=reinterpret_cast<int (*)[myj]>(a);//注意這個(gè)myj是列數(shù)for (int ii=0;ii<i;ii++){for (int jj=0;jj<myj;jj++){ (*x)[jj]*=2;} x=x+1; }
}void setC6(int *a,int myj){int (*x)[myj]=reinterpret_cast<int (*)[myj]>(a);//注意這個(gè)myj是列數(shù)for (int jj=0;jj<myj;jj++){ (*x)[jj]*=5;}
}int main(int argc, char **argv)
{int a[10];for (int i=0;i<10;i++){a[i]=i;}for (int i=0;i<10;i++){cout<<a[i]<<endl;} long long b[10];for (long long* i=b;i<b+10;i++){(*i)=reinterpret_cast<long long>(i);//每個(gè)指針的大小都是8個(gè)字節(jié)的,64位操作系統(tǒng),1個(gè)字節(jié)8位,8個(gè)字節(jié)64位,存每個(gè)元素的地址。}for (int i=0;i<10;i++){cout<<b[i]<<endl;} int c[10];setC1(c,10);for (int i=0;i<10;i++){cout<<c[i]<<" ";} cout<<endl; //指向二維數(shù)組的指針,也可理解為指向一維數(shù)組的指針的指針。setC6(c,10);for (int i=0;i<10;i++){cout<<c[i]<<" ";} cout<<endl; int d[3][4] = { {0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11} };for (int i=0;i<3;i++){for (int j=0;j<4;j++){cout<<d[i][j]<<" ";} cout<<endl; }cout<<endl; int (*p)[4]=d;//注意這個(gè)4是列數(shù),表示指向4個(gè)列的行的指針。*(*(p+1)+2)=*(*(p+1)+2)*10;for (int i=0;i<3;i++){for (int j=0;j<4;j++){cout<<d[i][j]<<" ";} cout<<endl; }setC2(d,1,4);for (int i=0;i<3;i++){for (int j=0;j<4;j++){cout<<d[i][j]<<" ";} cout<<endl; }cout<<endl; setC3(&d[0][0],1,4);for (int i=0;i<3;i++){for (int j=0;j<4;j++){cout<<d[i][j]<<" ";} cout<<endl; }cout<<endl; setC4(&d[0],4);for (int i=0;i<3;i++){for (int j=0;j<4;j++){cout<<d[i][j]<<" ";} cout<<endl; }cout<<endl; int dd[3][4] = { {0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11} };for (int i=0;i<3;i++){for (int j=0;j<4;j++){cout<<dd[i][j]<<" ";} cout<<endl; }cout<<endl; setC5(&dd[0],3,4);for (int i=0;i<3;i++){for (int j=0;j<4;j++){cout<<dd[i][j]<<" ";} cout<<endl; }cout<<endl; return 0;
}
指向 a 的指針變量 p:
int (*p)[7] = c;
*表明 p 指向一個(gè)數(shù)組,數(shù)組的類型為int [7]
0 1 2 3 4 5 6 7 8 9 140729998545072 140729998545080 140729998545088 140729998545096 140729998545104 140729998545112 140729998545120 140729998545128 140729998545136 140729998545144 0 1 2 3 4 5 6 7 8 9 0 5 10 15 20 25 30 35 40 45 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 60 7 8 9 10 11 0 1 2 3 40 50 600 70 8 9 10 11 0 1 2 3 400 500 6000 700 8 9 10 11 0 10 20 30 400 500 6000 700 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 0 2 4 6 8 10 12 14 16 18 20 22 Hit any key to continue...總結(jié)
以上是生活随笔為你收集整理的c++17(26)-数组、二维数组的指针、指向数组的指针、指向数组的指针的指针的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: @PostConstruct注解详解
- 下一篇: c++17(28)-Makefile(1