c++17(26)-数组、二维数组的指针、指向数组的指针、指向数组的指针的指针
生活随笔
收集整理的這篇文章主要介紹了
c++17(26)-数组、二维数组的指针、指向数组的指针、指向数组的指针的指针
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#include <iostream>
#include <string.h>
using namespace std;void setC1(int a[],int size){//a實質是一個指針,指向數組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);//注意這個myj是列數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);//注意這個myj是列數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);//每個指針的大小都是8個字節的,64位操作系統,1個字節8位,8個字節64位,存每個元素的地址。}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; //指向二維數組的指針,也可理解為指向一維數組的指針的指針。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;//注意這個4是列數,表示指向4個列的行的指針。*(*(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 指向一個數組,數組的類型為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...總結
以上是生活随笔為你收集整理的c++17(26)-数组、二维数组的指针、指向数组的指针、指向数组的指针的指针的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: @PostConstruct注解详解
- 下一篇: 程序员法律考试笔记(2)-依法治国