A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zwj2015 中级黑马   /  2015-10-26 21:41  /  567 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

指针数组:指针的数组,表示一个数组,并且数组的每一个元素都是指针类型。
数组指针:数组的指针,表示一个指针,并且是指向数组的指针。

不运行程序,问下面代码的输出是什么?
1#include<iostream>
2 using namespace std;
3 int main()
4 {
5     char *str[]={"welcome","to","Fortemedia","Nanjing"};
6     char**p=str+1;
7     str[0]=(*p++)+2;
8     str[1]=*(p+1);
9     str[2]=p[1]+3;
10   str[3]=p[0]+(str[2]-str[1]);
11   cout<<str[0]<<endl;
12   cout<<str[1]<<endl;
13   cout<<str[2]<<endl;
14   cout<<str[3]<<endl;
15   system("pause");
16}

指针是c/c++语言中一个重要的语言特性,但对于c/c++的初学者来说,却不是那么好理解。总起来说指针一个特殊的变量,这个变量能合法的使用*操作符对指针的变量内容进行提领(dereference)和成员访问。对于指针变量在它四个字节(32位平台)的内存里存储的数据是一个内存的地址值,也就是我们平时说的指向一个地址,而指针变量的类型则决定着对指针变量的所指向的地址里的数据的访问方式和从指向的地址开始往下所涵盖的范围。举例来说:
#include<iostream>
using namespace std;
int main()
{
    int i[2]={1073741824,-1073741824};
    int *p1=&i[0];
    char *p2=(char*)&i[0];
    float *p3=(float*)&i[0];
    printf("%d->%d/n",p1,*p1);
    printf("%d->%d/n",p2,*p2);
    printf("%d->%f/n",p3,*p3);
    p1++;
    p2++;
    p3++;
    printf("%d->%d/n",p1,*p1);
    printf("%d->%d/n",p2,*p2);
    printf("%d->%f/n",p3,*p3);
    system("pause");
}


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马