c++可以定义一个空数组吗 C++怎么让一个数组是空的?

C++\u600e\u4e48\u8ba9\u4e00\u4e2a\u6570\u7ec4\u662f\u7a7a\u7684

C++\u4e2d\u5b9a\u4e49\u4e00\u4e2a\u6570\u7ec4\uff0c\u6ca1\u6709\u7edd\u5bf9\u7a7a\u7684\u6982\u5ff5\u3002
\u56e0\u4e3a\uff0c\u5b9a\u4e49\u6570\u7ec4\u540e\uff0c\u7cfb\u7edf\u5c31\u4f1a\u7ed9\u6570\u7ec4\u5206\u914d\u5185\u5b58\u7a7a\u95f4\uff0c\u8be5\u7a7a\u95f4\u53ef\u80fd\u4ee5\u524d\u88ab\u5176\u5b83\u7a0b\u5e8f\u4f7f\u7528\u8fc7\uff0c\u5176\u4e2d\u7559\u6709\u539f\u6765\u5199\u5165\u7684\u6570\u636e\uff08\u5bf9\u4e8e\u672c\u7a0b\u5e8f\u6765\u8bf4\uff0c\u5c31\u662f\u5783\u573e\u6570\u636e\uff09\uff0c\u4e5f\u53ef\u80fd\u6ca1\u6709\u88ab\u4f7f\u7528\u8fc7\uff0c\u5176\u5185\u5b58\u6570\u636e\u503c\u4e3a0.
\u5982\u679c\u60f3\u5728\u5b9a\u4e49\u6570\u7ec4\u540e\uff0c\u5c06\u6570\u7ec4\u5185\u5bb9\u6e05\u4e3a0\uff0c\u5219\u53ef\u4ee5\u91c7\u7528\u4ee5\u4e0b\u4e09\u79cd\u65b9\u6cd5\uff1a
\u521d\u59cb\u5316\u4e3a0
int arr[10]={0}; //\u8be5\u8bed\u53e5\u7f6e\u7b2c\u4e00\u4e2a\u5143\u7d20\u4e3a0\uff0c\u5176\u4f59\u5143\u7d20\u7cfb\u7edf\u81ea\u52a8\u6e05\u4e3a0.\u624b\u5de5\u9010\u4e2a\u5143\u7d20\u7f6e0
int arr[10]; //\u53ea\u5b9a\u4e49\uff0c\u672a\u521d\u59cb\u5316for( int i=0;i<10;i++ ) //\u91c7\u7528\u5faa\u73af\u904d\u5386\u6570\u7ec4\uff0c\u9010\u4f4d\u8d4b\u503c\u4e3a0 a[i]=0;\u91c7\u7528memset\uff08\uff09\u51fd\u6570\u7f6e\u6570\u7ec4\u5143\u7d20\u4e3a0
#include //memset()\u51fd\u6570\u5934\u6587\u4ef6int arr[10]; //\u53ea\u5b9a\u4e49\uff0c\u672a\u521d\u59cb\u5316memset( arr, 0, sizeof(arr) ); //memset\u51fd\u6570\uff0c\u5c06\u4ecearr\u5f00\u59cb\u7684sizeof(arr)\u4e2a\u5b57\u8282\u7f6e\u4e3a0

C++\u4e2d\u5b9a\u4e49\u4e00\u4e2a\u6570\u7ec4\uff0c\u6ca1\u6709\u7edd\u5bf9\u7a7a\u7684\u6982\u5ff5\u3002
\u56e0\u4e3a\uff0c\u5b9a\u4e49\u6570\u7ec4\u540e\uff0c\u7cfb\u7edf\u5c31\u4f1a\u7ed9\u6570\u7ec4\u5206\u914d\u5185\u5b58\u7a7a\u95f4\uff0c\u8be5\u7a7a\u95f4\u53ef\u80fd\u4ee5\u524d\u88ab\u5176\u5b83\u7a0b\u5e8f\u4f7f\u7528\u8fc7\uff0c\u5176\u4e2d\u7559\u6709\u539f\u6765\u5199\u5165\u7684\u6570\u636e\uff08\u5bf9\u4e8e\u672c\u7a0b\u5e8f\u6765\u8bf4\uff0c\u5c31\u662f\u5783\u573e\u6570\u636e\uff09\uff0c\u4e5f\u53ef\u80fd\u6ca1\u6709\u88ab\u4f7f\u7528\u8fc7\uff0c\u5176\u5185\u5b58\u6570\u636e\u503c\u4e3a0.
\u5982\u679c\u60f3\u5728\u5b9a\u4e49\u6570\u7ec4\u540e\uff0c\u5c06\u6570\u7ec4\u5185\u5bb9\u6e05\u4e3a0\uff0c\u5219\u53ef\u4ee5\u91c7\u7528\u4ee5\u4e0b\u4e09\u79cd\u65b9\u6cd5\uff1a
\u521d\u59cb\u5316\u4e3a0
int arr[10]={0}; //\u8be5\u8bed\u53e5\u7f6e\u7b2c\u4e00\u4e2a\u5143\u7d20\u4e3a0\uff0c\u5176\u4f59\u5143\u7d20\u7cfb\u7edf\u81ea\u52a8\u6e05\u4e3a0.\u624b\u5de5\u9010\u4e2a\u5143\u7d20\u7f6e0
int arr[10]; //\u53ea\u5b9a\u4e49\uff0c\u672a\u521d\u59cb\u5316for( int i=0;i<10;i++ ) //\u91c7\u7528\u5faa\u73af\u904d\u5386\u6570\u7ec4\uff0c\u9010\u4f4d\u8d4b\u503c\u4e3a0 a[i]=0;\u91c7\u7528memset\uff08\uff09\u51fd\u6570\u7f6e\u6570\u7ec4\u5143\u7d20\u4e3a0
#include //memset()\u51fd\u6570\u5934\u6587\u4ef6int arr[10]; //\u53ea\u5b9a\u4e49\uff0c\u672a\u521d\u59cb\u5316memset( arr, 0, sizeof(arr) ); //memset\u51fd\u6570\uff0c\u5c06\u4ecearr\u5f00\u59cb\u7684sizeof(arr)\u4e2a\u5b57\u8282\u7f6e\u4e3a0

  c++不能定义空数组,数组是在栈上分配的;
  一个长度为0的数组称之为“空数组”,空数组是一个真正的对象,只是包含元素个数为0。
  null数组是一个空引用。
  假设一个方法返回一个数组,如果它返回null,则调用方法必须先判断是否返回null,才能对放回数组进一步处理,而如果返回空数组,则无须null引用检查。鉴于此,返回数组的方法在没有结果时通常返回空数组,而不是null,这样处理比较方便。
  空数组即下标为0的数组,如a[0]。在函数中声明空数组是没有任何意义的,当然也编译不过。而在类或结构体中,是可以这样声明的。
  

可以定义,前面的人说数组是在栈上分配的,是因为他是定义在主函数里面的。只要定义在主函数上面,“using namespace std;”下定义就可以定义在堆上。

#include<bits/stdc++.h>
//别问我这是什么头文件,这是c++老师教我们的万能头文件(哎呀,透露了)
using namespace std;
int a[15005][15005];//<<<<<<<<<定义在这
int main()
{
    
    return 0;
}
//额,我定义的是二维数组。


应该是说长度为0的数组吧准确的说,是不可以的但是某些c++编译器允许定义 int a[]或int a[0],这其实是c里面的方式,gcc把这个特性扩展到了c++里面。定义这种貌似长度为0的数组,其实是为了实现变长数组。不知道是不是想问这个。

显然不能定义空数组,数组是在栈上分配的,那么就一个要有一个首地址让EBP寄存器来索引他的位置,要是空的数组,CPU又怎么会知道有这么一个数组存在呢?

  • c璇█鏄惁鍙互瀹氫箟绌瀛楃鏁扮粍 鑰屼笉璧嬪
    绛旓細鍙互鐨锛岄鍏堝彲浠ュ畾涔変釜瀛楃鏁扮粍锛岀劧鍚庨氳繃閿洏璇诲叆鎴栬呯洿鎺ヤ粠鏂囦欢涓鍏ュ瓧绗︺傚偍瀛樺氨鍙互浜嗐備笉杩囪繕瑕佸湪瀹氫箟鍓嶅垽鏂暟缁勭殑澶у皬锛屽埆瓒婄晫灏卞彲浠ュ暒~
  • C涓浣瀹氫箟绌烘暟缁,涓轰粈涔堟垜瀹氫箟鐨勭┖鏁扮粍鍛楄嚜鍔ㄨ祴鍊?
    绛旓細濡傛灉浣犱笉瀵规暟缁勮繘琛屽垵濮嬪寲锛屽垯鏁扮粍鐨勫兼槸鏈煡鏁板硷紝鏍规嵁涓嶅悓鐨勮繍琛岀幆澧冿紝鍏舵暟鍊间篃涓嶅悓 鍥犱负瀹氫箟涓涓暟缁鍚庯紝涓嶅垵濮嬪寲锛屾暟缁勭殑鍊煎氨鏄綋鍓嶅唴瀛樺尯鍩熺殑鍊硷紝杩欎釜鍊兼槸涓嶇‘瀹氱殑(閫氬父鏈垵濮嬪寲鐨勫唴瀛樺尯鍩熺殑16杩涘埗鏁板间负0xcc)濡傛灉瑕佸畾涔変竴涓叏0鐨鏁扮粍鍙互 int TCi[W]={0};int TCo[W]={0};杩欐牱浼氳嚜鍔ㄥ皢...
  • C璇█濡備綍瀹氫箟涓斾娇鐢绌烘暟缁杩涜浼犲弬;
    绛旓細鐩存帴鐢ㄥ氨鍙互浜嗐傚彧鏄鏁扮粍瑕侀寮寰楄冻澶熷ぇ銆俰nclude <stdio.h>#include <stdlib.h>int inputarr(int *);int outputarr(int ,int *);main(){ int arr[100]; int s; s=inputarr(arr); outputarr(s,arr); printf ("\n");}int inputarr(int *p){ int a,n; int k=0; pri...
  • C璇█涓,瀹氫箟涓涓┖鏁扮粍,鐒跺悗瀹氫箟涓涓惊鐜鍙ラ殢渚垮摢绉,
    绛旓細int a銆100銆戯紱int i锛寈锛泂canf锛堚%d鈥濓紝&x锛塮or锛坕=0锛沬<100锛沬++锛塧銆恑銆=锛坕+1锛*x for锛坕=0锛沬<100锛沬++锛塸rintf锛堚%d 鈥濓紝a銆恑銆戯級锝 鐢╥Pad鎵撶殑 鏈夌殑绗﹀彿鍙兘涓嶅噯纭 寤鸿鏀逛竴涓嬬鍙
  • C涓浣瀹氫箟绌烘暟缁,涓轰粈涔堟垜瀹氫箟鐨勭┖鏁扮粍鍛楄嚜鍔ㄨ祴鍊?
    绛旓細濡傛灉浣犱笉瀵规暟缁勮繘琛屽垵濮嬪寲锛屽垯鏁扮粍鐨勫兼槸鏈煡鏁板硷紝鏍规嵁涓嶅悓鐨勮繍琛岀幆澧冿紝鍏舵暟鍊间篃涓嶅悓 鍥犱负瀹氫箟涓涓暟缁鍚庯紝涓嶅垵濮嬪寲锛屾暟缁勭殑鍊煎氨鏄綋鍓嶅唴瀛樺尯鍩熺殑鍊硷紝杩欎釜鍊兼槸涓嶇‘瀹氱殑(閫氬父鏈垵濮嬪寲鐨勫唴瀛樺尯鍩熺殑16杩涘埗鏁板间负0xcc)濡傛灉瑕佸畾涔変竴涓叏0鐨鏁扮粍鍙互 int TCi[W]={0};int TCo[W]={0};杩欐牱浼氳嚜鍔ㄥ皢...
  • c涓庝箞瀹氫箟绌烘暟缁
    绛旓細string[] a =new string[2];int[] b=new int[2];
  • C璇█瀛楃涓插拰瀛楃鏁扮粍鏈変粈涔堝尯鍒,鎬庝箞瀹氫箟绌鐨勫瓧绗︿覆鍜屽瓧绗︽暟缁
    绛旓細棣栧厛锛C蹇呯劧瀹氫箟涓哄瓧绗鏁扮粍锛孋璇█娌℃湁瀹氫箟瀛楃涓茬殑鍏抽敭瀛楋紝C璇█鐢ㄥ瓧绗︽暟缁勫鐞嗗瓧绗︿覆銆傚鏋滈渶瑕佸姩鎬侀暱搴﹀瓧绗︿覆蹇呴』鐢ㄥ瓧绗︽寚閽堝疄鐜般傛垜鍐欎簡涓涓绫讳技鐨勭▼搴忋俰nclude <stdlib.h> include <stdio.h> include <string.h> int main(void) { const int SIZE_INC=16;char *a="abcd";char *b="bcdef...
  • 濡備綍杈撳叆涓涓甯︾┖鏍肩殑浜岀淮瀛楃鏁扮粍(鐢C璇█)
    绛旓細鐢╣ets(str), 瀹冩槸浠ュ洖杞︿綔涓虹粨鏉熺殑銆俰nclude <stdio.h> int main(){ char str[100];gets(str);printf("%s\n", str);return 0;}
  • C璇█涓竴缁鏁扮粍鍒濆艰〃鑳藉惁涓虹┖?
    绛旓細鍙互鐨勶紝姣斿int a[10]={};杩欐牱鐨勮瘽绯荤粺浼氳嚜鍔ㄤ负姣忎釜鏁扮粍鎴愬憳鍒濆鍖栦负榛樿鍊0 浣嗘槸濡傛灉鍙槸int a[10]杩欐牱绯荤粺浼氬垵濮嬪寲姣忎釜鏁颁负涓涓闅忔満鏁
  • c璇█鏁扮粍鐨瀹氫箟
    绛旓細C璇█鏀寔涓缁存暟缁勫拰澶氱淮鏁扮粍銆傚鏋涓涓暟缁鐨勬墍鏈夊厓绱犻兘涓嶆槸鏁扮粍锛岄偅涔堣鏁扮粍绉颁负涓缁存暟缁勩傚湪C璇█涓娇鐢ㄦ暟缁勫繀椤诲厛杩涜瀹氫箟锛屼竴缁存暟缁勭殑瀹氫箟鏂瑰紡涓猴細绫诲瀷璇存槑绗︼紱 鏁扮粍鍚 锛沎甯搁噺琛ㄨ揪寮廬銆傚叾涓紝绫诲瀷璇存槑绗︽槸浠讳竴绉嶅熀鏈暟鎹被鍨嬫垨鏋勯犳暟鎹被鍨嬨傛暟缁勫悕鏄敤鎴峰畾涔夌殑鏁扮粍鏍囪瘑绗︼紝鏂规嫭鍙蜂腑鐨勫父閲忚〃杈惧紡琛ㄧず...
  • 扩展阅读:c++考试题库及答案 ... c++中数组的定义与使用 ... c++编程 ... c++定义二维数组 ... c++教程 ... c++数组定义的几种方式 ... c++和java哪个好就业 ... c++数组定义 ... c++可以不定义数组长度吗 ...

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