精华内容
下载资源
问答
  • 比如 int arr[1000000]={0}; int main() { return 0; } 写一个这样的代码,生成的exe文件比int arr[1000000]={1};的要小 为什么?
  • c语言二维数组如何初始化1 有两种方法(1)在定义时可以直接赋值来初始化(2)在定义后可以为其元素一个个来赋值2 示例1234567891011121314151617181920212223242526272829#include《stdio.h》void display(int arr[2]...

    c语言二维数组如何初始化

    1 有两种方法

    (1)在定义时可以直接赋值来初始化

    (2)在定义后可以为其元素一个个来赋值

    2 示例

    1234567891011121314151617181920212223242526272829#include《stdio.h》

    void display(int arr[2][3], int row, int col){

    for (int i = 0; i 《 row; i++){

    for (int j = 0; j 《 col; j++){

    printf(“%d ”, arr[i][j]);

    }

    puts(“”);

    }

    puts(“”);

    }

    int main(){

    //方法(1)

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

    //方法(2)

    int arr2[2][3];

    int num = 1;

    for (int i = 0; i 《 2; i++){

    for (int j = 0; j 《 3; j++){

    arr2[i][j] = num++;

    }

    }

    display(arr1, 2, 3);

    display(arr2, 2, 3);

    getchar();

    return 0;

    }

    3 运行结果

    559e5dc5e78bc08067527ee24d072944.png

    由结果可知,两种方式达到的效果是一样的

    4 扩展

    由于C语言中数组中的元素的地址是连续的,所以下面的写法也是可以的,运行效果同上

    12345678910111213141516171819202122232425262728#include《stdio.h》

    void display(int arr[2][3], int row, int col){

    for (int i = 0; i 《 row*col; i++){

    for (int j = 0; j 《 col; j++){

    printf(“%d ”, arr[i][j]);

    }

    puts(“”);

    }

    puts(“”);

    }

    int main(){

    //方法(1)

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

    //方法(2)

    int arr2[2][3];

    int num = 1;

    int *p = *arr2;//指向数组的第一个元素

    for (int i = 0; i 《 2 * 3; i++){

    *p++ = num++;

    }

    display(arr1, 2, 3);

    display(arr2, 2, 3);

    getchar();

    return 0;

    }

    展开全文
  • C++数组初始化为0

    千次阅读 2019-10-08 18:46:27
    局部数组:没有默认值,如果声明的时候不定义,则会出现随机数(undefined);如果声明的长度与赋值长度不相等,则有,声明的长度>...初始化为0: 全局数组  int arr[10]; 局部数组  int arr[10]...

    局部数组:没有默认值,如果声明的时候不定义,则会出现随机数(undefined);如果声明的长度与赋值长度不相等,则有,声明的长度>赋值长度,后面用0补足,声明的长度>赋值长度,发生编译错误;

    全局数组:声明时不赋值,默认值为0

    指针new:动态获取的内存,默认值undefined

    初始化为0:

    全局数组

      int arr[10];

    局部数组

      int arr[10] = {};

    指针

      int* arr = new int [10];

      for (int i = 0; i < 10; i ++) arr[i] = 0;

    拷贝自博客 C++数组初始化为0

    展开全文
  • 数组初始化为0

    千次阅读 2019-05-02 15:07:30
    int a[10]; int main(){ int i; for(i=0;i<10;i++){ cout<<a[i]<<endl; } } 输出为 0 0 0 0 0 0 0 0 0 0 -------------------------------- ...

    int数组和char数组都可用这种方式初始化为0

    #include<iostream>
    
    using namespace std;
    int a[10];
    
    int main(){
    	int i;
    	for(i=0;i<10;i++){
    		cout<<a[i]<<endl;
    	}
    }
    
    
    

    输出为

    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    
    --------------------------------
    Process exited with return value 0
    Press any key to continue . . .
    
    #include<iostream>
    
    using namespace std;
    
    
    int main(){
    	int i;
    	int a[10];
    	for(i=0;i<10;i++){
    		cout<<a[i]<<endl;
    	}
    }
    

    输出为

    2686672
    2686728
    2686916
    1966836949
    658210400
    -2
    1966739810
    1967086532
    4250176
    2686868
    
    --------------------------------
    Process exited with return value 0
    Press any key to continue . . .
    

    char数组

    #include<bits/stdc++.h>//c++的万用头文件 
    using namespace std;
    
    char A[6],B[6];
    
    int main(){
    	int i;
    	for(i=0;i<6;i++){
    		cout<<"A["<<i<<"]="<<(int)A[i]<<' '<<"B["<<i<<"]="<<(int)B[i]<<endl;
    	}
    	
    	cin>>A;
    	cin>>B;
    	cout<<A<<endl<<B;
    }
    

    之前在学习c的时候,老师介绍的初始化方法是

    #include<bits/stdc++.h>
    using namespace std;
    
    int main(){
    	int a[10]={1};
    	for(int i=0;i<10;i++){
    		cout<<a[i]<<endl;
    	}
    }
    

    这样a[0]=1,其他的都是0。

    展开全文
  • C/C++ int数组初始

    万次阅读 2019-01-19 14:21:02
    一、一维数组 ... //定义了数组array,并将数组元素全部初始化为0; 静态数组 int array[100] = {1}; //定义了数组array,并将数组第一个元素初始化为1,后面99个元素初始化为0; 静态数组 int arr...

    一、一维数组

    C/C++初始化

    1. 静态数组 int array[100]; //定义了数组array,但并未对数组初始化;
    2. 静态数组 int array[100] = {0}; //定义了数组array,并将数组元素全部初始化为0;
    3. 静态数组 int array[100] = {1}; //定义了数组array,并将数组第一个元素初始化为1,后面99个元素初始化为0;
    4. 静态数组 int array[100] = {4,5}; //定义数组array,并初始化前两个元素为4,5,后面剩余元素初始化为0;

    C++动态数组初始

    1. 动态数组 int *p_array = new int[100]; delete []p_array; //分配了长度为100的数组array,并全部初始化为0;
    2. 动态数组 int *p_array = new int[100]{3,5}; delete []p_array; //前两个元素初始化为3和5,后面的原始初始化为0;

    曾经我想将int数组元素全部初始化为1,我以为下方的写法没有问题:

    int a[5] = { 1 }; // 曾经我想全部初始化为1

    事实却是,只有数组的第一个元素被初始化为1,其他全为0;

    数组初始化列表中的元素个数小于指定的数组长度时,不足的元素补以默认值。

    对应基本类型int来说,就是补0,再看一下非基本类型的数组:

    string a[5] = { "foo" };
    

    有了上面的规则,就很容易知道其实相当于:

    string a[5] = { "foo", "", "", "", "" };
    

    即后面4个元素调用了string的默认构造函数进行的初始化,而第一个则调用的string::string(const char*)进行的初始化。

    还有一个区别:

    int a[5];
    string a[5];
    

    如果不明确指出初始化列表,那么基本类型是不会被初始化的(除全局变量和静态变量外),所有的内存都是“脏的”;而类类型则会为每个元素调用默认构造函数进行初始化。

    注意,在C++11中中间的赋值号可以省略,即 int a[5]{1};并且,如果初始化列表为空,如 int a[5]{},那将初始化所有元素为默认值,即与 int a[5]{0}; 等级

    二、二维数组

    C/C++初始化

    1. 静态 int array[10][10]; //定义数组,并未初始化(脏数据)
    2. 静态 int array[10][10] = {{1},{2,2},{3,3,3}}; //数组初始化了array[0][0]及array[1][0,1]及array[2][0,1,2],剩余元素初始化为0;

    C++动态数组初始

    1. 动态 int (*array)[n] = new int[m][n]; delete []array; //默认初始化为0;
    2. 动态 int *array = new int[m]; for(i) array[i] = new int[n]; for(i) delete []array[i]; delete []array; //多次析构,默认初始化为0;
    3. 动态 int *array = new int[m][n]; delete []array; //数组按行存储,默认初始化为0

    三、三位数组

    C++动态数组初始
    int *array = new int[m][3][4]; //只有第一维可以是变量,其他维数必须是常量,否则会报错
    delete []array; //必须进行内存是否,否则内存将泄漏;

    四、数组作为参数形式传递

    一维数组传递

    1. void func(int *array);
    2. void func(int array[]); //真实使用时,一般还需要给数组大小

    二维数组传递

    1. void func(int **array);
    2. void func(int (*array)[n]);

    数组名作为函数形参时,在函数体内,其失去了本身的内涵,仅仅只是一个指针,而且在其失去其内涵的同时,它还失去了其常量特性,可以作自增、自减等操作,可以被修改。

    五、数组重新置0

    char数组

    char a[10];
    memset(a,0,sizeof(a));		//将每个元素设置为0
    memset(a,1,sizeof(a));		//将每个元素设置为1
    memset(a,'a',sizeof(a));	//将每个元素设置为a,‘a’ = 97 (ASCII码)
    也就是说第二个元素要在ASCII码范围内(0~127)

    int数组

    int a[10];
    memset(a,0,sizeof(a));	//将每个字节设置为0,此时每个int元素正好也为0
    memset(a,1,sizeof(a));	//将每个字节设置为1,此时每个int元素为16843009 = 0x1010101
    // 0x1010101 = 1000000010000000100000001(二进制)
    

    int数组示例

    #include <stdio.h>
    #include <string.h>
    
    int main ()
    {
    	int array[10];
    
    	memset(array,0,sizeof(array));
    	for(int i=0; i<10; i++)
    	{
    		printf("%d\n",array[i]);//输出0
    	}
    	
    	memset(array,1,sizeof(array));
    	for(int i=0; i<10; i++)
    	{
    		printf("%d\n",array[i]);//输出16843009
    	}
    	
    	return(0);
    }
    

    memset原型

    声明:

    void *memset(void *str, int c, size_t n)
    

    将str中前n个字节用 c 替换并返回 str。
    其实这里面的ch就是ascii为ch的字符;
    将s所指向的某一块内存中的前n个 字节的内容全部设置为ch指定的ASCII值;

    memset()的功能是对str的每一个字节进行ASCII赋值,int占四个字节,所以对int数组进行非0赋值或初始化时不能用memset()函数,只能循环处理/定义时初始化;

    参考资料:
    https://www.cnblogs.com/SarahZhang0104/p/5749680.html

    展开全文
  • C++ 数组初始化为0

    千次阅读 2020-03-29 23:48:13
    //初始化默认为0 2、作为局部变量时:初值为一随机值 int a[100] = {0};//a[0] = 0,其余元素默认用0填充 3、遍历赋值 和循环赋值实际一样 void *memset( void *dest, int c, size_t count ); The memset ...
  • 看到C++将数组初始化为全0的这个用法: int a[100] = {0};// 初始化一个全0的数组 ...究其原因,正如C/C++ int数组初始化中所述,数组初始化列表中的元素个数小于指定的数组长度时,不足的元素补以默认值...
  • c/c++ int数组初始化/重置为0

    万次阅读 2017-09-04 11:21:55
    1、int数组其实初始化的时候默认就是全部为0 int a[1000]; int a[1000] = {0}; 以上2种写法其实都可以 注意:int a[1000] = {0};这种方法如果想把整形数组a都初始化为1就不能用了 比如int a[1000] ...
  • 二维数组初始化为0的方式

    千次阅读 2021-05-12 23:56:05
    采用赋值的方法,赋值一个为0,其余自动置0. 一、初始化;int a[100][100]={0}; 二、 1.int a[100][100]; 2.memset(a,0,sizeof(a)); 三、动态分配内存方式构建数组,把malloc函数改用成calloc函数。
  • 如何将数组初始化为0

    万次阅读 2017-10-04 23:05:01
    如何将数组初始化为全0? C语言中,声明数组的语句: int arr[100]; 这样声明得到的数组里面的存储的是随机的我们不知道的数据,对用户来说就是垃圾。有许多情况我们要将数组初始化为全零的情况才能进行其他操作...
  • 在QT中使用C++将很大数组初始化为0出现的问题 问题: 在qt中写程序想要定义一个很大的数组,并且初始化为0 首先使用的方法: radius[1000]={0}; 然而发现 这不是我想要的呀,不知道是什么原因,我看网上给过这个...
  • C语言数组初始化教程C语言数组初始化一语法type arrName[count] = {val1, val2, val3, ....};参数参数描述type数组中每一个元素的数据类型。arrName数组的变量名。count数组能存储的元素的个数。val给数组初始化的值...
  • ``` #include int main(){ int a[5]={0,1,2}; printf("%d\n",a[4]);//初始化元素默认为0,即使没被定义 ... int b[5];... int c[100]={0};...int c[100]={0},只能初始化为0,memset可以初始化为0或-1
  • 我在C中有一个基本程序,它列出了给定数量的素数.完成工作的类是下面的 – 我的问题是,当...我不知道我是否误解了,但不应该将int数组初始化为零?如果没有,整数10有什么特别之处,导致它初始化为奇怪的值?int*...
  • In C/C++ we have memset() function which can fulfill my wish but in Java how can i initialize all the elements to a specific ... Whenever we write int[] array=new int[10]; , this simply initialize ...
  • c怎么把数组初始化为0(数组很大)

    千次阅读 2014-09-14 22:04:56
    如果是初始化,只要定义第一个元素为0,后面就全为0了,如 int a[SIZE] = {0}; 如果是在定义以后想全部赋为0,用memset()函数是比较快的。 如: int a[SIZE]; memset(a, 0, sizeof(int)*SIZE);
  • 比如这样的一个结构数组: struct CAND { int hznum; TCHAR hz[260];...但我调试的结果却发现:只有第一个结构初始化为0了,别的结构都没有。 怎样把全部10个结构都在定义的时候初始化为0呢?
  • [Unity][C#][数组]int数组初始

    千次阅读 2020-03-05 16:29:34
    int[] int_1 = {1,2,3,4,5 }; creature_1.Stats = new int[3] { 101,102,103 }; 参考资料: 1. 各种C#数组的定义和初始化 各种C#数组的定义和初始化 2. 3. ...
  • 被定义为全局的数组,在声明的时候,就自动赋为0了; 但是字符数组仍为空。 对于局部变量类型的数组,也只要在初始化定义时写一个0进去就行了,其余元素也会相应地赋0;如:int a[50]={0};

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 123,496
精华内容 49,398
关键字:

int数组初始化为0