#include<iostream>
using namespace std;
int main()
{
char S[32] = { 'a','b','c',' ','d','e','f','\0','g','h','i',' ','j','k','l','\0','m','n','o',' ','p','q','\0','r','s','t','u',' ','v','\0','x','y' };
cout << S << endl;
cout << S + 1 << endl;
cout << S + 8 << endl;
//1、输出到第一个\0就停止了 2、S+n就是从角标n号开始输出
cout << &S[0] << endl;
cout << &S[1] << endl;
cout << &S[8] << endl;
//公式2: S+n 等同于 &S[n]
cout << '2' << endl;
unsigned int(*p)[2] = (unsigned int(*)[2])S; //将内存解释为若干个unsigned int [2]类型的数组
cout << p << endl;//p p[0]的地址 p[0][0]的地址
cout << *p << endl;//p[0] p[0][0]的地址
cout << *(p + 1) << endl;//p[1] p[1][0]的地址
cout << **p << endl;//p[0][0]
cout << *(*p + 1) << endl;//p[0][1]
cout << **(p + 1) << endl;//p[1][0]
cout << p[0] << endl;
cout << p[0][0] << endl;
cout << p[1][0] << endl;
cout << p[0][1] << endl;
char(*p)[8] = (char(*)[8])S; //将内存解释为若干个char [8]类型的数组
cout << p << endl;
cout << *p << endl;
cout << *(p + 1) << endl;
//8个一组
unsigned short(*p)[2][2] = (unsigned short(*)[2][2])S; //将内存解释为若干个unsigned short[2][2]类型的数组
cout << p << endl; //p[0][0][0]的地址
cout << *p << endl;//p[0][0][0]的地址
cout << *(p + 1) << endl;//p[1][0][0]的地址
cout << **p << endl;//p[0][0][0]的地址
cout << *(*p + 1) << endl;//p[0][1][0]的地址
cout << **(p + 1) << endl;//p[1][0][0]的地址
cout << ***p << endl;//p[0][0][0]
cout << ***(p + 1) << endl;//p[1][0][0]
cout << **(*p + 1) << endl;//p[0][1][0]
cout << *(**p + 1) << endl;//p[0][0][1]
cout << p[0] << endl;//p[0][0][0]的地址
cout << p[0][0] << endl;//p[0][0][0]的地址
cout << p[1][0] << endl;//p[1][0][0]的地址
cout << p[0][1] << endl;//p[0][1][0]的地址
cout << p[0][0][0] << endl;
cout << p[0][1][0] << endl;
}
c++指针基础
最新推荐文章于 2024-06-18 20:12:34 发布