int (*a[5][4])[3][8]; 
int b[6][3][8]; 
a[3][2]=b; int (*(*p)[4])[3][8]; 
p=a; 
p[3][2][1][2][3]=100; 不要调试,判断出哪一句错了? 本人是一个具有几年C++编程经验的,最近把C++语法从头夯实一遍,至今才敢说是一名C++高手。 
我很鄙视有些C++程序员,连基本的指针概念都很混乱还敢做程序员,以上的题目我想搞C++的没几个人能弄明白,更别说灵活运用了,指针是C的灵魂,劝你们回家好好研究研究吧,哈哈哈哈哈 
这才是2级指针的例子,n多级的你们还不得跟看天书似的。 我就不明白,有些人不懂这些也敢做C程序,真实拿c当basic用呀,C&C++是用来搞底层的东西的,不是让你们用来画界面调接口的,不自己用C写数据结构跟没学一样,链表,树这些基本的数据结构你们自己写过吗,没写过还敢出来混,就知道用现成的类库,调用这个调用那个的就以为自己懂C了,还敢出来挣钱,真他妈的不知天高地厚。 我发这贴目的就是为了劝那些学C的知难而退吧,你搞不懂上面的代码永远进不了C的大门,回家改学basic或者java吧

解决方案 »

  1.   

    做了7、8年VC开发,有些话不得不说,很多搞C++的也有几年工作经验了,月薪7、8千真不少了,可有一部分人真是混吃的,连一些基本的C++语法都搞不清,处理个字符串都得折腾半天,用到个链表还要到处找资料找代码,内存泄漏从来不是他们考虑的问题,线程根本就没有同步这个概念,做一个项目,bug像天上的星星一样多,改了一个bug,又出来两个bug,做了一两年,项目还是基本不能用,有这工夫微软windows都更新换代了,公司都快被这些人搞垮了,然后他们一拍屁股走人,找下个公司接着混,留下那些烂代码可苦了接手的人。 
    奉劝那些同行的SB们,你们积点德吧,不要再C++行业捣乱了,滚出去吧。 
    还有那些准备学C的,如果觉得C很难就改学别的吧,不要强努,做C程序员是要有天赋的,没这个慧根就算了吧,省得祸害千年 
      

  2.   

    做了7、8年VC开发,有些话不得不说,很多搞C++的也有几年工作经验了,月薪7、8千真不少了,可有一部分人真是混吃的,连一些基本的C++语法都搞不清,处理个字符串都得折腾半天,用到个链表还要到处找资料找代码,内存泄漏从来不是他们考虑的问题,线程根本就没有同步这个概念,做一个项目,bug像天上的星星一样多,改了一个bug,又出来两个bug,做了一两年,项目还是基本不能用,有这工夫微软windows都更新换代了,公司都快被这些人搞垮了,然后他们一拍屁股走人,找下个公司接着混,留下那些烂代码可苦了接手的人。 
    奉劝那些同行的SB们,你们积点德吧,不要再C++行业捣乱了,滚出去吧。 
    还有那些准备学C的,如果觉得C很难就改学别的吧,不要强努,做C程序员是要有天赋的,没这个慧根就算了吧,省得祸害千年 
      

  3.   

    a[3][2]=b; 
    这句错了,b的维数多了一维
    不知道我说的对不
      

  4.   

    自己回答一下
    int (*a[5][4])[3][8]; //分配了一个[5][4]长度的数组,数组元素是(*)[3][8]类型的指针
    int b[6][3][8];//定义一个[6][3][8]的int型数组,其等价的指针类型为(*)[3][8] 
    a[3][2]=b; //把数组a的第[3][2]个元素赋值为b,因为显然a[3][2]是a数组里一个元素,元素类型为(*)[3][8],所以可以用b来赋值int (*(*p)[4])[3][8]; //定义一个2级指针,此指针和数组a在类型上也是等价的
    p=a;//所以可以用a赋值
    p[3][2][1][2][3]=100;//p[3][2][1][2][3]实际等价于b[1][2][3],注意前面[3][2]是一个基地址,后面的[1][2][3]是另一个基地址,虽然形式上可以连续写成[3][2][1][2][3]但是中间有一次寻址跳转的,这也说明了p是一个2级指针所以以上都没有错误的可能大多数人即使看了我的说明还是一头雾水,所以劝你们不要学C了,该干嘛干嘛去吧这种问题可不是哗众取宠,编写复杂数据结构就要用到这些,还是虚心点吧。我已经可以把指针运用的行云流水了,2级3级4级...100级的不在话下,很是兴奋,仅此而已。
      

  5.   

    自己回答一下
    int (*a[5][4])[3][8]; //分配了一个[5][4]长度的数组,数组元素是(*)[3][8]类型的指针
    int b[6][3][8];//定义一个[6][3][8]的int型数组,其等价的指针类型为(*)[3][8] 
    a[3][2]=b; //把数组a的第[3][2]个元素赋值为b,因为显然a[3][2]是a数组里一个元素,元素类型为(*)[3][8],所以可以用b来赋值int (*(*p)[4])[3][8]; //定义一个2级指针,此指针和数组a在类型上也是等价的
    p=a;//所以可以用a赋值
    p[3][2][1][2][3]=100;//p[3][2][1][2][3]实际等价于b[1][2][3],注意前面[3][2]是一个基地址,后面的[1][2][3]是另一个基地址,虽然形式上可以连续写成[3][2][1][2][3]但是中间有一次寻址跳转的,这也说明了p是一个2级指针所以以上都没有错误的可能大多数人即使看了我的说明还是一头雾水,所以劝你们不要学C了,该干嘛干嘛去吧这种问题可不是哗众取宠,编写复杂数据结构就要用到这些,还是虚心点吧。我已经可以把指针运用的行云流水了,2级3级4级...100级的不在话下,很是兴奋,仅此而已。
      

  6.   

    我又仔细看了一遍,LZ的答案是对的,但是LZ对答案的解释我补充一下:
    int (*(*p)[4])[3][8];
    p=a;//这样赋值正确最简单的理解方法就是将*与[]等价看待,而且p和a 中的[4]必须是一样的,要不然维数不同是不能赋值的.指针方面确实是c/c++中比较不好掌握的东西,用惯了才能理解其真正的含义对于c++应该掌握的是面向对象的东西,而不是c+(带类的c),不要以为掌握了指针就掌握一切,但你可以说是掌握了c的灵魂
    不知道LZ对面向对象怎么看,c++拿手的是类的机制的东西,而不是指针,因为它是面向对象的,类才是最重要的还有就是编程是不需要天分的,只要肯下功夫就可以写出高质量的代码的,如果LZ天天都这么自以为是,认为自己了不起的话,我劝LZ不要写什么代码了,对于一个自以为是的程序员来说,你怎么能和别人合作,你怎么能写出什么高质量的代码?我劝LZ还是改行吧
      

  7.   

    本人是一个具有几年C++编程经验的,最近把C++语法从头夯实一遍,至今才敢说是一名C++高手。 这一句错了!