One 许增宝

二维指针的应用与二维数组
void main( ) { char **p; char *s[ ]={ "up&q...
扫描右侧二维码阅读全文
27
2019/05

二维指针的应用与二维数组

void  main( )
{
    char **p;
    char *s[ ]={ "up", "down", "left", "right"};
    int i;
    p=s;
    for( i=0; i<4; i++ )
        cout << *p++ <<'\t';
    cout<<endl;
}
/*
输出结果:
up      down    left    right
*/
  • *s[]为指针数组
  • s[0]s[1]s[2]s[3]分别对应"up", "down", "left""right"四个字符串的首地址,打印s[索引],就打印了对应字符串(为真么不是打印首地址请看为什么打印字符指针输出是字符串
  • *s[0]*s[1]*s[2]*s[3]分别对应"up", "down", "left""right"四个字符串的首地址上的值,打印*s[索引],就打印了对应字符串首个值
  • s 为指针数组这一片地址的首地址,*(s + i)为每个字符串对应的首地址上的值
  • p=sp保存的是s的值,也就是指针数组的地址,这个数组相当于二维数组,*(p+i)相当于取的是每个字符串的首地址,*(*(p+i)+j)相当于取对应字符串中的某个值

可以看这段程序加深对二维指针的理解

void main()
{
    int a = 10;
    int *p = &a;
    int **q = &p;

    cout << "a 的地址:" << &a << endl;
    cout << "p 的值:" << p << endl;
    cout << "*p 的值:" << *p << endl;
    cout << "p 的地址:" << &p << endl;
    cout << "q 的值:" << q << endl;
    cout << "*q 的值:" << *q << endl;
    cout << "**q 的值:" << **q << endl;
    system("pause");
}
/*
输出结果:
a 的地址:00AFF814
p 的值:00AFF814
*p 的值:10
p 的地址:00AFF808
q 的值:00AFF808
*q 的值:00AFF814
**q 的值:10
*/
最后修改:2019 年 05 月 29 日 01 : 10 PM

发表评论