首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C中一个小疑点

2012-02-27 
C中一个小问题这段代码有多处(???)我不明白,请高手指点..#includeiostreamusing namespace stdint main

C中一个小问题
这段代码有多处(???)我不明白,请高手指点..
#include<iostream>
using namespace std;
int main()
{
static int a[2]={1,2};
int p1=5,p2=6,*page1,*page2;
int Test[2][3]={{1,2,3},{4,5,6}};
int Test2[3]={1,2,3};
page1=&p1;
page2=&p2;
int (*A)[3],(*B)[3]; //这句怎么理解?
A=&Test[1];
B=&Test2;
cout<<*page1<<endl;
cout<<(*A)[0]<<(*A)[1]<<(*A)[2]<<endl;
cout<<(*B)[3]<<endl; //为什么结果是1呢?
return 0;
}

[解决办法]

C/C++ code
#include <iostream>using namespace std;int main(){    static int a[2] = { 1, 2 };    int p1 = 5, p2 = 6, *page1, *page2; // page1, page2没有初始化,即指向不明    int Test[2][3] = { { 1, 2, 3 }, { 4, 5, 6 } };// 两种解释:// 1. Test是2维array, array元素为int, 第一维size为2, 第二维size为3;// 2. Test是个array, array大小为2, 元素类型为array, 元素array大小为3, 其中元素类型为int (个人觉得这种递归解释比较好理解后面的问题)    int Test2[3] = { 1, 2, 3 }; // Test2为array, 大小为3, 元素类型int    page1 = &p1; // page1指向p1    page2 = &p2; // page2指向p2    int (*A)[3], (*B)[3]; // A为一指针, 其指向一array, 该array大小为3, array元素类型int; B亦然    A = &Test[1]; // A指向Test第二个元素, 参看上面的解释2    B = &Test2;   // B指向Test2    cout << *page1 << endl; // 输出page1指向的变量的值, 即输出p1的置    cout < <(*A)[0] < <(*A)[1] < <(*A)[2] < <endl; // (*A)得array, []取array中的元素    cout < <(*B)[3] < <endl; // 同上    return 0;}
[解决办法]
int (*A)[3],(*B)[3]; //这句怎么理解? 
指向数组的指针,数组长度为3

cout < <(*B)[3] < <endl; //为什么结果是1呢? 
=======================
你都越界了,你的机器上市1,别人的可不一定是
(*B)[2]是3,相当于B[0][2]
你就记住,B是一个指针,他指向数组第一个元素的地址

热点排行