C语言定义数组行列数的问题 c语言如何定义未知个数的数组

C\u8bed\u8a00\u5b9a\u4e49\u6570\u7ec4\u884c\u5217\u6570\u7684\u95ee\u9898

\u540c\u5b66\u4f60\u597d\uff0c\u6211\u4e5f\u9047\u5230\u8fc7\u8fd9\u6837\u7684\u95ee\u9898\uff0c\u6570\u7ec4\u5b9a\u4e49\u65f6\uff0c\u884c\u5217\u6570\u4e0d\u80fd\u7528\u53d8\u91cf\u3002
\u4f46\u662f\uff0c
\u6211\u4eec\u53ef\u4ee5\u52a8\u6001\u521b\u5efa\u4e00\u4e2a\u4e8c\u7ef4\u6570\u7ec4\u3002
\u4f60\u53ef\u4ee5\u8fd9\u6837\u505a\uff1a\uff08\u4ee5int\u578b\u4e3a\u4f8b\uff09
int
**a;
int
m,n,i;
scanf("%d%d",&m,&n);
//\u8f93\u5165\u4f60\u6b64\u6b21\u60f3\u8981\u521b\u5efa\u6570\u7ec4\u7684\u884c\u6570\u548c\u5217\u6570\uff0c\u50a8\u5b58\u5728m\u548cn\u4e2d
a=(int**)malloc(m*sizeof(int*));
/*malloc\u51fd\u6570\u5728stdlib.h\u91cc\u9762\uff0c\u7528\u7684\u65f6\u5019\u52a0\u5165\u8fd9\u4e2a\u5934\u6587\u4ef6*/
for(i=0;i<m;i++)
a[i]=(int*)malloc(n*sizeof(int));
/*\u8fd9\u6837\u4ee5\u540e\u4f60\u5c31\u53ef\u4ee5\u628aa\u5f53\u4f5c\u4e8c\u7ef4\u6570\u7ec4a[m][n]\u6765\u7528\u4e86\u3002\u3002
\u7531\u6b64\u53ef\u4ee5\u5b9e\u73b0\uff0c\u521b\u5efa\u4e0d\u786e\u5b9a\u884c\u5217\u6570\u7684\u4e8c\u7ef4\u6570\u7ec4\u4e86
\uff08
\u524d\u63d0\u4f60\u77e5\u9053malloc\u51fd\u6570\u7684\u610f\u4e49\uff0c\u5e76\u8981\u638c\u63e1\u6307\u9488\u7684\u57fa\u7840\u77e5\u8bc6\u54e6
\uff09
\u91c7\u7eb3\u6211\u54df~~

\u7528malloc\u51fd\u6570\u3002\u3002\u3002\u3002
\u6bd4\u5982\u4f60\u8981\u7533\u8bf7int\u578b\u7684\u672a\u77e5\u4e2a\u6570\u6570\u7ec4\u3002\u53ef\u4ee5\u4ee5\u4e0b\u7a0b\u5e8f
#include
#include

main()
{
int *p;
int n;
printf("\u8bf7\u8f93\u5165\u5f55\u5165\u4e2a\u6570N\uff1a\n");
scanf("%d",&n);
p = (int *)malloc(n*sizeof(int));
//\u7136\u540e\u628a*p\u5f53\u4f5c\u6570\u7ec4\u6307\u9488\u7528\u5c31\u53ef\u4ee5\u4e86\u3002\u3002~~~~
}

同学你好,我也遇到过这样的问题,数组定义时,行列数不能用变量。 但是, 我们可以动态创建一个二维数组。

你可以这样做:(以int型为例)

int **a;
int m,n,i;
scanf("%d%d",&m,&n); //输入你此次想要创建数组的行数和列数,储存在m和n中

a=(int**)malloc(m*sizeof(int*)); /*malloc函数在stdlib.h里面,用的时候加入这个头文件*/

for(i=0;i<m;i++)
a[i]=(int*)malloc(n*sizeof(int));

/*这样以后你就可以把a当作二维数组a[m][n]来用了。。

由此可以实现,创建不确定行列数的二维数组了 ( 前提你知道malloc函数的意义,并要掌握指针的基础知识哦 )
采纳我哟~~

用线性表或者链表比较符合你的要求。最简单的是在C的基础上建立动态数组,就是用malloc。不过这个动态数组的功能还是有限。
加上 #include <malloc.h> 后
主函数内定义动态数组:
先输入你想要定的n的值,然后加上这句
int *A;
A = (int *)malloc(sizeof(int)*n);

数组做不到,你可以用 relloc来重新分配数组长度,
我建议你用链表来做

你试试利用主函数将可变动的行列数传递到子函数(子函数为创建表格)

常见的方法就是用链表,动态申请内存。

  • 鍏充簬C璇█瀹氫箟浜岀淮鏁扮粍鐨勯棶棰
    绛旓細浠ヤ笅鑳芥纭畾涔変簩缁存暟缁勭殑鏄 -- 浠ヤ笅鑳芥纭瀹氫箟 鏁扮粍鐨鏄 (鍘绘帀浜岀淮涓ゅ瓧锛夈侫锛 int a[ ][3]; -- 璇硶閿欙紝娌″甫鍒濆鍖栵紝涓嶅厑璁哥敤 [绌虹櫧]锛屼笉鍏佽 鏁扮粍澶у皬涓嶅畾銆侭) int a[ ]={2*3} -- 姝g‘瀹氫箟浜嗘暟缁,鏄竴缁存暟缁勶紝鏁扮粍鍏冪礌鍙湁1 涓紝鍒濆鍖栨暟鍊间负 2*3 ,灏辨槸 6銆C) int a[ ]...
  • C++缂栫▼,鍒敤c璇█ 瀹氫箟涓涓3琛4鍒楃殑浜岀淮鏁扮粍,骞跺垵濮嬪寲鍊间负{4,4,34...
    绛旓細include "stdio.h"int main(void){ int a[3][4] = { 4, 4, 34, 37, 3, 12, 2, 6, 5, 17, 9, 11 };int i, j, posi = 0, posj = 0;for (i = 0; i < 3; i++)for (j = 0; j < 4; j++)if (a[i][j] < a[posi][posj]){ posi = i;posj = j;...
  • C璇█瀹氫箟鏁扮粍闂
    绛旓細浣犺繖绉嶆姞缁嗚妭鐨勭簿绁炲緢濂斤紝鎴戞潵鍛婅瘔浣犳纭瓟妗堛傚鏋滀綘鏄瀹氫箟char a[10]锛岄偅涔堜綘纭繚鑳戒娇鐢ㄧ殑鍐呭瓨鍗曞厓灏辨槸a[0]~~a[9]锛屼絾鏄C缂栬瘧鍣ㄤ笉浼氬鏁扮粍涓嬫爣杩涜妫鏌ワ紝鍥犳a[10]涓嶄細鎶ラ敊锛屽苟琚紪璇戜负a[9]涔嬪悗鐨勯偅涓唴瀛樺崟鍏冦備綘瀹氫箟a[10]鐨勬椂鍊欓氬父鐢变簬鍐呭瓨瀵归綈绛夊師鍥犲垎閰嶇殑鍐呭瓨浼氫笉姝10bytes锛屽洜姝ょ紪璇戝櫒...
  • c璇█涓濡備綍鑾峰彇涓涓簩缁鏁扮粍鐨勮鍒楁暟?
    绛旓細涓烘柟渚跨淮鎶わ紝鍙互灏琛屽垪鏁板畾涔涓哄畯锛岀洿鎺ヨ皟鐢ㄥ搴旂殑瀹忓悕浣滀负琛屽垪鍊笺2 鍔ㄦ佽幏鍙栥傚浜巘ype array[A][B];褰㈠紡鐨勪簩缁鏁扮粍锛屽彲浠ラ氳繃璁$畻sizeof鑾峰彇琛屽垪鏁般俿izeof(array[0][0])涓轰竴涓厓绱犲崰鐢ㄧ殑绌洪棿锛宻izeof(array[0])涓轰竴琛屽厓绱犲崰鐢ㄧ殑绌洪棿锛宻izeof(array)涓烘暣涓暟缁勫崰鐢ㄧ殑绌洪棿锛屼簬鏄細琛屾暟 = size...
  • c璇█涓鍦ㄤ笉鐭ラ亾浜岀淮鏁扮粍琛屽垪鏁扮殑鎯呭喌涓嬫庝箞鍦ㄥ嚱鏁伴噷璋冪敤杩欎釜浜岀淮鏁扮粍...
    绛旓細琛屾暟 = sizeof(array)/sizeof(array[0]);鍒楁暟 = sizeof(array[0])/sizeof(array[0][0])锛涗綘涔熷彲浠ュ湪鍑芥暟褰㈠弬閲屽姞鍏ヨ鍒楀硷紝鐒跺悗涓诲嚱鏁拌皟鐢ㄥ瓙鍑芥暟鐨勬椂鍊欙紝鎶琛屽垪鏁鍋氫负鍙傛暟浼犺繃鍘汇
  • c璇█涓濡備綍瀹氫箟琛屼笌鍒楁暟鎹被鍨嬩笉鍚岀殑浜岀淮鏁扮粍
    绛旓細杩欎釜鏄笉鑳藉疄鐜扮殑锛屾墍璋鏁扮粍锛屽氨鏄暟鎹被鍨嬬浉鍚岀殑涓涓暟鎹泦鍚堬紝濡傛灉瑕佹暟鎹被鍨嬩笉鍚岋紝鍙兘瀹氫箟鍦ㄤ笉鍚岀殑鏁扮粍涓
  • c璇█ 鎬庢牱鐢ㄧ▼搴忕煡閬撲簩缁鏁扮粍琛屾暟鍜屽垪鏁
    绛旓細姣斿鏈夎繖鏍蜂竴涓簩缁鏁扮粍锛 int a[3][5];姹傛暟缁勫厓绱犵殑鎬绘暟锛 sizeof(a) / sizeof(int)姹傛暟缁勫垪鏁帮細 sizeof(a[0])/sizeof(int)鑰屾暟缁勮鏁板垯涓 锛( sizeof(a) / sizeof(int) )/ ( sizeof(a[0]) / sizeof(int) )涓嶇煡閬撲綘鏄庣櫧浜嗕箞锛
  • C璇█鎬庝箞瀹氫箟涓涓簩缁鏁扮粍鍙互浣挎瘡琛岀殑杈撳叆闀垮害浠绘剰
    绛旓細2銆佷緥绋嬶細int row=0; //鍑芥暟int col=0; //鍒楁暟int i;int ** arr=NULL; //涓嬮潰鍋囪瀛樺偍鐨勬暟鎹被鍨嬩负intprintf(鈥滆杈撳叆浜岀淮鏁扮粍鐨勮鏁鍜屽垪鏁帮細鈥濓級;scanf("%d%d",&row,&col);//瑕佷笉瑕佸姞鍒ゆ柇杈撳叆鏄惁鍚堟硶浣犺嚜宸卞喅瀹氾紝杩欓噷灏变笉鍔狅紝arr = (int **)malloc(sizeof(int*)*row)...
  • C璇█銆傛庝箞瀹氫箟涓涓崄琛屼簲鍒梖loat鍨嬬殑浜岀淮鏁扮粍銆
    绛旓細float array[10][5]={{...},{...},{...},{...},{...},{...},{...},{...},{...},{...}};瀹氫箟鍔犻檮鍒濆间簡
  • c璇█:浜岀淮鏁扮粍琛屽垪浜掓崲
    绛旓細鐢变簬琛屻佸垪涓嶇‘瀹氾紝鎵浠ヨ鍔ㄦ佸鐞嗐備妇渚嬩唬鐮佸涓嬶細//#include "stdafx.h"//If the vc++6.0, with this line.#include "stdio.h"#include "stdlib.h"int main(void){ int **a,**b,m,n,i,j; while(1){//淇濊瘉杈撳叆鐨勮銆佸垪鏁颁负姝f暟 printf("Please enter m & n(int m>0...
  • 扩展阅读:扫一扫题目出答案 ... c语言输出5 5矩阵二维数组 ... c#考试题库 ... c#笔试题 ... 二维数组的行与行交换 ... c#语言教程 ... c语言2 3数组行列互换 ... c语言面试题及答案 ... c语言二维数组列换为行 ...

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