你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
潇潇雨歇pku 发表于 2016-1-28 09:10 TArr是一个指针,指向int[2]数组,大概相当于n行2列的数组。 unsigned int (*TArr)[2] = (unsigned int (*) ...
很明显是打印两个1~20的数组
以及一个 hellow world
所以问题应该不是在於输出结果,而是程序本身
应该是想表明可以用这种方式黏贴并宣告数个数组
也许用这种方式表达只是想告诉你差异?
改成这样或许容易懂些?
1: printf("TArr[%d][%d] = %d\n",row,col,(unsigned int (*)[0])TArr[row][col]);
2: printf("TArr[%d][%d] = %d\n",row,col,(unsigned int (*)[1])TArr[row][col]);
如果不特意标明,只的一般是数组的第一项地址。
所以 2 只是想证明这种方式是可以运行的
这是我的理解,不晓得对否?
unsigned int (*TArr)[2] = (unsigned int (*)[2])Arr;
这句代码就是把Arr的地址赋给TArr指针,但是直接赋值会出错,所以要把Arr强制转换成TArr同等类型。
所以第一次输出是1~20毫无疑问。
然后第二次输出,把unsigned int强制转换成unsigned int (*)[1],即指向一个元素的数组的指针,我就不理解是想表达什么了。
设计程序
编写程序代码
编译程序
运行程序
测试和调试程序
维护和修改程序