C语言关于二维数组的小问题

C\u8bed\u8a00\u4e2d\u4e8c\u7ef4\u6570\u7ec4\u95ee\u9898

\u4e24\u4e2aif\u8bed\u53e5\u7684\u6761\u4ef6\u5224\u65ad\u8981\u7528==\uff0c\u4e0d\u662f=

\u5199\u5b8c\u4ee5\u540e\u6211\u53d1\u73b0\u6709\u70b9\u957f\uff0c\u697c\u4e3b\u7ed9\u70b9\u8010\u5fc3\u770b\uff0c\u4e0d\u61c2\u6211\u4eec\u518d\u4ea4\u6d41~

a\u662f\u6574\u4e2a\u4e8c\u7ef4\u6570\u7ec4\u7684\u9996\u5730\u5740\uff0cshort\u957f\u5ea6\u4e3a2\uff0csizeof(a)=2*5*5=50\uff1b
a+1\u6307\u5411\u4e8c\u7ef4\u6570\u7ec4\u7684\u7b2c\u4e8c\u4e2a\u5143\u7d20\uff0c\u5b83\u4ec5\u4ec5\u662f\u4e00\u4e2a\u6307\u9488\uff0c\u5982\u679c\u5728a+1\u524d\u9762\u52a0\u4e00\u4e2a*\u53f7\uff0c\u5c31\u662f\u7b2c\u4e8c\u4e2a\u5143\u7d20\u7684\u503c\uff0c\u5373a[0][1]\uff0c\u6240\u4ee5\uff0ca+1\u662f\u4e00\u4e2a\u6307\u9488\uff0c\u5b83\u6307\u5411\u4e8c\u7ef4\u6570\u7ec4\u4e2d\u7684\u67d0\u4e2a\u6570\uff0c\u6307\u9488\u53ea\u5360\u56db\u4e2a\u5b57\u8282\u3002\u518d\u4e3e\u4e2a\u4f8b\u5b50\uff0c\u6bd4\u5982a+5, \u5219\u6307\u5411\u7684\u662f\u7b2c\u516d\u4e2a\u5143\u7d20\uff0csizeof(a+5)\u540c\u6837\u7b49\u4e8e\u56db\uff0c\u800c\u4e0d\u662f\u697c\u4e0a\u8bf4\u7684\u662f50+1\u7684\u540e\u679c\uff0c\u8fd9\u4e2a\u662f\u53ef\u4ee5\u9a8c\u8bc1\u7684\uff1b
a\u662f\u6307\u5411\u4e8c\u7ef4\u6570\u7ec4\u7684\u9996\u5730\u5740\uff0c\u5982\u679c\u6211\u4eec\u628a\u4e8c\u7ef4\u6570\u7ec4\u770b\u6210\u884c\u5217\u9635\u7684\u8bdd\uff0c*a\u5219\u662f\u7b2c\u4e00\u884c\u7684\u9996\u5730\u5740\uff0c\u8fd9\u65f6\u5019\uff0csizeof(*a)\u76f8\u5f53\u4e8e\u95ee\u7b2c\u4e00\u884c\u7684\u5143\u7d20\u4e00\u5171\u5360\u7528\u591a\u5c11\u4e2a\u5b57\u8282\u7684\u5185\u5b58\uff1f\u7b54\u6848\u5c31\u662f5\u4e2a\u5143\u7d20\u4e58\u4ee5\u6bcf\u4e2a\u5143\u7d20\u5360\u4e24\u4e2a\u5b57\u8282\u5566\uff1b
\u4e0a\u9762\u6211\u4eec\u521a\u521a\u8bf4\u4e86\uff0c*a\u662f\u7b2c\u4e00\u884c\u7684\u9996\u5730\u5740\uff0c+0\u8868\u793a\u6307\u5411\u7b2c\u4e00\u4e2a\u5143\u7d20\uff0c\u6240\u4ee5\uff0c\u8fd9\u65f6\u5019\uff0c\u8ddfsizeof(a+1)\u5b8c\u5168\u662f\u4e00\u4e2a\u610f\u601d\uff0c\u5b83\u5df2\u7ecf\u53d8\u6210\u6307\u5411\u4e00\u4e2ashort\u7684\u6307\u9488\u4e86\uff0c\u4e5f\u7b49\u4e8e4\uff1b
sizeof(**a)\u660e\u767d\u4e86\u5c31\u4e0d\u8bf4\u4e86~

如果对二维数组中全部元素初始化,则定义数组时第一维的长度可以省略,但第二维的长度不能省略。所以D是不正错的 选项C中 是按组初始化的 所以也正确 这是教材上的

D这种情况在Turbo C中时属于Warning的错误 应为计算机在进行给数组赋值是从a[0][0]开始,a[0][1], a[0][i] 在i的值最大是下个值才赋给a[1][0]. 这样依次类推的。 如果出现D 也就是说i的值没有上限,
这种数组的定义就完全没有意义了。
C 数组的排列
0 1
0 1
1 2 3
这里a[0][0]被定义出来 但是没有赋值
这就像int a;这个语句一样。

C哪里不对?
D只可以省略第一维

列必需要明确。明确后的没初始化的都认为是0.行可以省

这种东西记住就好了,书上也有的 !

  • c璇█ 浜岀淮鏁扮粍鐨勯棶棰
    绛旓細a[2][3]灏辨病鏈夐亾鐞嗕簡銆傚洜涓猴紝鏍规湰灏辨病鏈夊畾涔塧[2][3]锛屽氨娌℃湁杩欎釜鏁扮粍鍏冪礌銆傛晠绋嬪簭浼氭姤閿欍
  • C璇█鍏充簬浜岀淮鏁扮粍鐨勫皬闂
    绛旓細濡傛灉瀵逛簩缁存暟缁勪腑鍏ㄩ儴鍏冪礌鍒濆鍖栵紝鍒欏畾涔夋暟缁勬椂绗竴缁寸殑闀垮害鍙互鐪佺暐锛屼絾绗簩缁寸殑闀垮害涓嶈兘鐪佺暐銆傛墍浠鏄笉姝i敊鐨 閫夐」C涓 鏄寜缁勫垵濮嬪寲鐨 鎵浠ヤ篃姝g‘ 杩欐槸鏁欐潗涓婄殑
  • C璇█浜岀淮鏁扮粍闂
    绛旓細2銆佷笉鑳界敤涓缁存暟缁勫畾涔夊鍚嶏紝鍥犱负鏄瓧绗︾被鍨嬬殑鏁扮粍锛屽鍚嶄腑鍖呭惈澶氫釜瀛楃銆備竴缁存暟缁勫彧鑳戒繚瀛樹竴涓鍚銆3銆乻tmp鏄竴缁存暟缁勶紝淇濆瓨涓涓瓧绗︿覆鐨勩備笉鏄敤鏉ヤ繚瀛10涓汉鐨勫鍚嶏紝浠呬綔涓哄瓧绗︿覆浜ゆ崲鐨勪复鏃跺彉閲忋
  • C璇█鐨勪簩缁存暟缁勯棶棰
    绛旓細a[0][0]灏辨槸0*2+0 = 0锛岀浉褰撲簬涓缁鏁扮粍鐨绗1涓厓绱 a[1][0]灏辨槸1*2+0 = 2锛岀浉褰撲簬涓缁存暟缁勭殑绗3涓厓绱 鎵浠ョi琛宩鍒楃殑鍏冪礌鐩稿綋浜庡畠瀵瑰簲鐨勪竴缁存暟缁勯噷涓嬫爣涓篿*n+j鐨勫厓绱狅紝濡傛灉绗竴涓厓绱犱互浣嶇疆1鏉ョ畻鐨勮瘽锛屼篃灏辨槸鏁扮粍閲岀殑绗琲*n+j+1涓綅缃 ...
  • C璇█浜岀淮鏁扮粍闂
    绛旓細璇戝櫒鍍廡urbo C绫诲瀷妫鏌ヤ笉涓ユ牸锛屽彲鑳戒細鐢ㄨ繃 int* p=a[0]; //杩欎釜鍚堟硶锛屼絾涓嶇鍚堜綘鐨勬剰鍥撅紝姣斿浣犺璁块棶a[1][1],鐢╬鐨勮瘽灏卞彧鑳芥槸p[5],鑰屼笉鑳芥槸p[1][1] ,杩欎釜鎸囬拡p鎶奱褰撲綔涓涓湁12涓厓绱犵殑1缁存暟缁浜嗭紝鑰屼笉鏄3琛4鍒楃殑鐭╅樀 姝g‘鐨勫仛娉曟槸 int (*p)[4]=a;瑕佺敤涓涓寚閽堟潵寮曠敤鏁扮粍...
  • c璇█浜岀淮鏁扮粍鐨勯棶棰
    绛旓細{ public static void main(String[] args){ int[][] d_array = new int[8][8]; //瀹氫箟涓涓8琛8鍒楃殑浜岀淮鏁扮粍 int num = 1; //瀹氫箟涓涓~鍏呯敤鐨勬暟澶囩敤 for (int i = 0 ; i < d_array.length ; i++)for (int j = 0 ; j < d_array[i].length ; j++)d_array[i][...
  • 姹C璇█浜岀淮鏁扮粍闂銆傘(30鍒)
    绛旓細2.鏁扮粍绗竴缁寸殑澶у皬鏄2銆3.瀵 4.a[0][0]銆乤[1][2]銆乤[1][0]鏄纭紩鐢ㄣ5.int a[2][]={{1,2,3},{4,5,6}};涓缁村彲鐪侊紝浜屼綅涓嶅彲鐪侊紱int a[2][4]={{1,2,3},{4,5},{6}};瓒婄晫浜嗭紝鍙畾涔変簡涓よ鍗磋祴浜嗕笁琛岀殑鍊硷紱int a[][3]={{1,2,3}{},{1,1}};绗竴绗...
  • c璇█浜岀淮鏁扮粍闂
    绛旓細printf("b鏁扮粍锛歕n");for (i=0;i<5;i++){ for(j=0;j<5;j++)printf("%3d ",b[i][j]);printf("\n");} for (i=0;i<5;i++){ b[i][0]=a[4][i];b[i][4]=a[0][i];} printf("鍙樺寲鍚庣殑b鏁扮粍锛歕n");for (i=0;i<5;i++){ for(j=0;j<5;j++)printf(...
  • c璇█鐨涓涓浜岀淮鏁扮粍鐨棰,姹傚ぇ绁炲府鎴戝啓涓涓
    绛旓細} } temp --; } for(i = 0;i<2*n-1;i++){ int j; for(j = 0;j<2*n-1;j++){ printf("%d ",a[i][j]); } printf("\n"); } return 0;}浠g爜淇濊瘉绠鍗曪紒鏁堟灉濡備笅锛
  • 鍏充簬C璇█瀹氫箟浜岀淮鏁扮粍鐨勯棶棰
    绛旓細浠ヤ笅鑳芥纭畾涔浜岀淮鏁扮粍鐨鏄 -- 浠ヤ笅鑳芥纭畾涔 鏁扮粍鐨勬槸 (鍘绘帀浜岀淮涓ゅ瓧锛夈侫锛 int a[ ][3]; -- 璇硶閿欙紝娌″甫鍒濆鍖栵紝涓嶅厑璁哥敤 [绌虹櫧]锛屼笉鍏佽 鏁扮粍澶у皬涓嶅畾銆侭) int a[ ]={2*3} -- 姝g‘瀹氫箟浜嗘暟缁,鏄竴缁存暟缁勶紝鏁扮粍鍏冪礌鍙湁1 涓紝鍒濆鍖栨暟鍊间负 2*3 ,灏辨槸 6銆C) int a[ ]...
  • 扩展阅读:扫一扫题目出答案 ... c语言数组问题讨论 ... c#考试题库 ... c#面试常见问题 ... 二维数组的行与行交换 ... c++编程入门自学 ... c#基础练习题 ... c#面试问题 ... c语言求二维数组的和 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网