c中隐式定义数组不指定大小会怎么样 c语言中定义数组长度与不定义数组长度有什么区别

C\u8bed\u8a00\u5b9a\u4e49\u6570\u7ec4\u4e00\u5b9a\u8981\u6307\u5b9a\u5927\u5c0f\u5417\uff1f

\u662f\u7684\uff0cc\u4e2d\u6570\u7ec4\u5b9a\u4e49\u65f6\u8981\u6307\u5b9a\u5927\u5c0f\u3002

\u5f53\u7136\uff0c\u4e07\u4e8b\u4e5f\u4e0d\u662f\u7edd\u5bf9\u7684\u3002\u4f8b\u5982\uff1a1.\u4f5c\u4e3a\u5f62\u53c2\u7684\u65f6\u5019\uff0c\u53ef\u4ee5\u4e0d\u6307\u5b9a\uff0c\u56e0\u4e3a\u5728\u51fd\u6570\u8c03\u7528\u7684\u65f6\u5019\uff0c\u6570\u7ec4\u4f1a\u8f6c\u4e3a\u6307\u9488\u7684\u30022.\u5f53\u4e3a\u5b57\u7b26\u4e32\u6570\u7ec4\u65f6\uff0cchar ST[]="hello word"\u8fd9\u513f\u5b9a\u4e49\u4e86\u4e00\u4e2aST\u5b57\u7b26\u6570\u503c\uff0c\u4e0d\u9700\u8981\u4f60\u81ea\u5df1\u53bb\u6307\u5b9a\u5927\u5c0f\uff0c\u7cfb\u7edf\u4f1a\u81ea\u52a8\u751f\u6210\u957f\u5ea6\u4e3a11.

C\u8bed\u8a00\u662f\u4f4e\u7ea7\u7684\u9ad8\u7ea7\u8bed\u8a00\uff0c\u4e0d\u4f1a\u63d0\u793a\u8d8a\u754c\uff0c\u4f60\u53ef\u4ee5\u5728\u5b9a\u4e495\u4e2a\u957f\u5ea6\u5443\u5b57\u7b26\u6570\u7ec4\u91cc\u9762\u8f93\u51657\u4e2a\u5b57\u7b26\uff0c\u4f46\u662f\u5b9a\u4e49\u957f\u5ea6\u5e76\u4e0d\u662f\u6ca1\u7528\u7684\uff0c\u7f16\u8bd1\u5668\u4f1a\u4e13\u95e8\u5f00\u8f9f5\u4e2a\u5b57\u7b26\u957f\u5ea6\u7559\u7ed9\u8fd9\u4e2a\u6570\u7ec4\uff0c\u662f\u4e13\u7528\u7684\uff0c\u56e0\u6b64\u4f60\u8f93\u51657\u4e2a\u5b57\u7b26\u540e\uff0c\u540e\u4e24\u4e2a\u5b57\u7b26\u5176\u5b9e\u662f\u8d85\u6807\u9886\u517b\uff0c\u7528\u4e86\u522b\u4eba\u5bb6\u7684\u8d44\u6e90(\u53ef\u80fd\u5360\u7528\u4e86\u5176\u4ed6\u53d8\u91cf\u7684\u7a7a\u95f4)\uff0c\u5e76\u4e14\u5f88\u5bb9\u6613\u5c31\u6ca1\u5a18\u8981\u4e86(\u5bb9\u6613\u51fa\u9519)\u3002\u5982\u679c\u7a0b\u5e8f\u7b80\u5355\uff0c\u6216\u8bb8\u51fa\u9519\u7684\u51e0\u7387\u6bd4\u8f83\u5c0f\uff0c\u4f8b\u5982\u4f60\u53ea\u5b9a\u4e49\u4e86\u8fd9\u4e2a\u6570\u7ec4\u7684\u8bdd\uff0c\u4e5f\u4e0d\u4f1a\u6709\u522b\u7684\u4e1c\u897f\u6765\u5e72\u6270\u4ed6\uff0c\u4ed6\u4e5f\u4e0d\u4f1a\u5e72\u6270\u522b\u7684\u4e1c\u897f\uff0c\u4f46\u662f\u7a0b\u5e8f\u4e00\u65e6\u590d\u6742\u8d77\u6765\uff0c\u5185\u5b58\u7a7a\u95f4\u6bd4\u8f83\u62e5\u6324\uff0c\u90a3\u4e48\u51fa\u9519\u662f\u96be\u514d\u7684\u3002\u56e0\u6b64\u6709\u65f6\u6211\u4eec\u8981\u81ea\u5df1\u53bb\u5b9e\u73b0\u8d8a\u754c\u63d0\u793a\u8fd9\u4e2a\u529f\u80fd\uff0c\u4f46\u662f\u663e\u7136\u8fd9\u6837\u4f1a\u964d\u4f4e\u7a0b\u5e8f\u7684\u6548\u7387\u3002\u4e00\u697c\u7684\u7b54\u6848\u4e5f\u503c\u5f97\u53c2\u8003\uff0c\u4ed6\u8bf4\u7684\u6211\u5c31\u4e0d\u8bf4\u4e86\u3002

如果不指定大小,就必须数组初始化,否则无法编译
如果是结构体中带有伸缩数组(C99特性):用该结构去定义变量时,该伸缩数组成员是无法使用的,这种结构只能去定义指针,通过动态分配足够的空间,来容纳结构中的正常成员和伸缩数组所需要的额外空间
例如:
代码中只有一句int a[]; 那么是无法编译的
int a[] = {1,2,3,....}; 这个是可以编译的,因为编译器会根据你所赋予a数组的元素计算出成员数量
struct num { int a; int b; int c[]; };
假设用num结构去定义变量:
struct num val;
那么val实际上的成员只有a和b可以调用,而c[],因为定义模版时没有赋予它固定的成员个数,实际上c数组所占用空间字节为0,即无储存空间可用
struct num *p;
p = malloc( sizeof(struct num) + 3 * sizeof(int) );
那么p所指向的空间是一个拥有4+4+3*4=20字节(模版的字节是:4+4+0=8)
其中第一个4字节分配给了成员a,第二个分配给了成员b
第3-第5个分配给了c[],也就是说,在动态分配之后,成员c是一个拥有3个元素的数组

可以用指针代替!

直接初始化也可以。

int array[] = {1,2,3,4,5};


  • c涓殣寮忓畾涔夋暟缁勪笉鎸囧畾澶у皬浼氭庝箞鏍
    绛旓細濡傛灉涓嶆寚瀹氬ぇ灏忥紝灏卞繀椤绘暟缁勫垵濮嬪寲锛屽惁鍒欐棤娉曠紪璇 濡傛灉鏄粨鏋勪綋涓甫鏈変几缂╂暟缁勶紙C99鐗规э級锛氱敤璇ョ粨鏋勫幓瀹氫箟鍙橀噺鏃讹紝璇ヤ几缂╂暟缁勬垚鍛樻槸鏃犳硶浣跨敤鐨勶紝杩欑缁撴瀯鍙兘鍘诲畾涔夋寚閽堬紝閫氳繃鍔ㄦ佸垎閰嶈冻澶熺殑绌洪棿锛屾潵瀹圭撼缁撴瀯涓殑姝e父鎴愬憳鍜屼几缂╂暟缁勬墍闇瑕佺殑棰濆绌洪棿 渚嬪锛氫唬鐮佷腑鍙湁涓鍙nt a[]; 閭d箞鏄棤娉曠紪璇戠殑 int ...
  • c#涓彉閲瀹氫箟鐨勬柟娉曟槸浠涔?
    绛旓細2銆闅愬紡瀹氫箟锛氫娇鐢ㄧ被鍨嬭鏄庣
  • C璇█鍦鏁扮粍涓暟鏈煡鐨勬儏鍐典笅鏈夊摢鍑犵鏂瑰紡
    绛旓細char s[] = "this is a test string";灏辨槸鍒濆鍖栦簡杩欐牱涓涓鏁扮粍s锛屽叾绌洪棿涓暟闅愬紡鐨勭敱鍒濆鍖栧瓧绗︿覆鍐冲畾銆2锛屾暟缁勫厓绱犳绘暟鏈煡锛屼絾鏈澶ц妯″凡鐭ャ傛瘮濡備笉鐭ラ亾鏁扮粍鐨勬讳釜鏁帮紝浣嗘槸纭畾涓嶄細瓒呰繃100涓紝閭d箞灏卞彲浠瀹氫箟涓涓100涓厓绱犵殑鏁扮粍锛屼緵瀛樺偍璋冪敤銆3锛屽姩鎬佸垎閰嶆暟缁勩傞氳繃malloc鍑芥暟锛屽彲浠ュ姩鎬佺殑鍒嗛厤...
  • 鍦C璇█涓鏁扮粍鐨勫垵濮嬪寲鏄浣瀹氫箟鐨?
    绛旓細鍦瀹氫箟鏁扮粍鏃讹紝鍙互鐢ㄦ斁鍦ㄤ竴瀵瑰ぇ鎷彿涓殑鍒濆鍖栬〃瀵瑰叾杩涜鍒濆鍖栥傚垵濮嬪寲鍊肩殑涓暟鍙互鍜屾暟缁勫厓绱犱釜鏁颁竴鏍峰銆傚鏋滃垵濮嬪寲鐨勪釜鏁板浜庡厓绱犱釜鏁帮紝灏嗕骇鐢熺紪璇戦敊璇紱濡傛灉灏戜簬鍏冪礌涓暟锛屽叾浣欑殑鍏冪礌琚垵濮嬪寲涓0銆傚鏋滅淮鏁拌〃杈惧紡涓虹┖鏃讹紝閭d箞灏嗙敤鍒濆鍖栧肩殑涓暟鏉闅愬紡鍦鎸囧畾鏁扮粍鍏冪礌鐨勪釜鏁帮紝濡備笅鎵寮忥細nt arra...
  • 瀛楃涓查暱搴 鏁扮粍闀垮害鍏蜂綋鍖哄垎
    绛旓細c鍚庣敱浜庤祴鍊肩殑鍚庢病鏈夎祴缁撴潫鏍囧織锛堜竴涓瓧绗︿竴涓瓧绗︾殑璧嬪肩郴缁熶笉浼氳嚜鍔ㄧ殑鍦ㄦ渶鍚庢坊鍔犵粨鏉熸爣蹇楋級锛屾墍浠鏁扮粍浼涓鐩村悜鍚庨潰绉诲姩锛岀煡閬撻亣瑙佺粨鏉熸爣蹇楋紝姝ら鍙互鐪嬪嚭瀛楃涓瞐:abc姹�a,b,c,绌烘牸 涓5涓瓧鑺傦紝杩樻湁涓涓眽瀛楁槸2涓瓧鑺傛墍浠ユ暟缁勭殑澶у皬鏄7涓瓧鑺傦紝浣嗘槸瀹為檯璧嬪肩殑瀛楃鍙湁3涓瓧鑺傦紒锛佽屾暟缁刡...
  • 鍦C璇█缂栫▼涓,瀹氫箟涓涓鏁扮粍鏃惰涓嶈鍒濆鍖?
    绛旓細涓嶆槸涓嶈兘鍒濆鍖栵紝鏄垵濮嬪寲鐨勪笉瀵广傚彟澶栵紝鏁扮粍鏈濂界敤memset鍒濆鍖栥傦紙1锛夊湪瀹氫箟鏁扮粍鏃跺鏁扮粍鍏冪礌璧嬩互鍒濆笺傚:static int a锛10锛=锝0锛1锛2锛3锛4锛5锛6锛7锛8锛9锝;缁忚繃涓婇潰鐨勫畾涔夊拰鍒濆鍖栧悗锛宎锛0锛=0锛宎锛1锛=1锛屸 锛宎锛9锛=9銆傦紙2锛夊垵濮嬪寲鏃跺彲浠ュ彧瀵逛竴閮ㄥ垎鍏冪礌璧嬪垵鍊笺備緥濡:...
  • C璇█涓敤涓缁鏁扮粍瀹屾垚鍘绘帀鏈澶у煎拰鏈灏忓 骞舵眰鍑哄钩鍧囧
    绛旓細int i,max,min,sum;double average;sum=0;max=a[0];min=a[0];for(i=0;i<5;i++){ if(maxa[i])min=a[i];sum=sum+a[i];} average=(double)(sum-max-min)/3;printf("\nThe max=%d\n",max);printf("\nThe min=%d\n",min);printf("\nThe average is:%f\n",average)...
  • C璇█涓鏁扮粍鍜屾寚閽堢殑闂銆
    绛旓細鏁扮粍鏄暟缁勶紝鎸囬拡鏄寚閽堛俛鏄痑锛宎[0]鏄痑[0]銆傚彧涓嶈繃鍦ㄤ綔涓簊izeof銆&鐨勬搷浣滄暟绛夋湁闄愬嚑涓乏鍊间笂涓嬫枃涔嬪鐨勫満鍚堟暟缁刟浼氶鍖栵紙闅愬紡杞崲锛岀粨鏋滅殑绫诲瀷鏄厓绱犵殑鎸囬拡绫诲瀷锛屼涪寮冧簡鏁扮粍绫诲瀷涓殑闀垮害锛夋垚鎸囧悜棣栦釜鍏冪礌鐨勬寚閽&a[0]锛屾墍浠ュ鏄撻犳垚璇В銆傚厛鑰冭檻LZ鏈鍚庣殑琛ㄨ堪銆傛敞鎰C璇█涓璞″彲浠ョ悊瑙d负琚崰鎹殑...
  • java鏁扮粍鑳界洿鎺ュ0鏄澶у皬鍚
    绛旓細java鏁扮粍涓鑳界洿鎺ュ0鏄澶у皬銆侸ava涓暟缁勭殑澹版槑鏄娊璞$殑锛屽苟涓嶈兘璇存槑澶у皬銆傚湪澹版槑鍚庣郴缁熶細鍒涘缓涓涓紩鐢ㄧ┖闂达紝杩欎簺澹版槑渚挎斁鍦ㄥ紩鐢ㄧ┖闂翠腑銆傚垱寤猴細鍗硁ew涓涓璞°傚垱寤哄璞℃椂蹇呴』鎸囧畾鏁扮粍闀垮害銆
  • C璇█涓,鏁扮粍鍜屾寚閽瀹氫箟鍦ㄥ唴瀛樻柟闈㈢殑鍖哄埆鍦ㄥ摢?
    绛旓細4锛屽畾涔夋寚閽堝彉閲忓苟涓嶄細甯︽潵鍐呭瓨鍒嗛厤锛岃鑷鍒嗛厤鍐呭瓨骞朵笖灏嗘寚閽堝彉閲忕殑鍐呭鏀瑰啓涓哄垎閰嶅ソ鐨勫湴鍧锛岄氬父鐢ㄥ唴瀛樺垎閰嶅嚱鏁板malloc杈惧埌锛瀹氫箟鏁扮粍浼氶殣寮鍒嗛厤鍐呭瓨 5锛屽sizeof鎿嶄綔绗︾殑杩斿洖鍊煎奖鍝嶏紝sizeof(鎸囬拡)姘歌繙浼氳繑鍥炲钩鍙版寚閽澶у皬锛岄氬父32浣嶆満杩斿洖4锛64浣嶈繑鍥8.鑰宻izeof(鏁扮粍鍚)锛屽垯浼氳繑鍥炴暟缁勭殑鍐呭瓨澶у皬锛岃繖...
  • 扩展阅读:定义数组的三种写法 ... c 怎么定义数组 ... c定义数组 不指定长度 ... 定义数组的三个步骤 ... 定义数组的方法 ... c语言中隐式转换 ... 数组的定义格式 ... 查询一个数据是否在数组中 ... 定义数组可以不指定长度吗 ...

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