精华内容
下载资源
问答
  • 关于局部变量数组初始化的问题,求助~~~背景:给客户端发送消息charbuffer[34];//打印消息为:buffer0x0012ee94"烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫1407750548"for(inti=0;i{buffer[i]='0';}执行初始后...

    关于局部变量数组初始化的问题,求助~~~

    背景:给客户端发送消息

    char buffer[34];   //  打印消息为:buffer0x0012ee94 "烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫1407750548"

    for(int i = 0; i 

    {

    buffer[i] = '0';

    }

    执行初始后打印消息为:buffer0x0012ee94 "0000000000000000000000000000000000烫烫烫烫烫1407750548"

    后面是组装buffer里的数据,然后发送,发送前的打印为:

    buffer0x0012ee94 "C000000000000VI001214077505480001E烫烫烫烫烫1407750548"

    而我真实要发出的数据应该为:C000000000000VI001214077505480001E,怎么会无缘无故多出乱码?

    ------解决思路----------------------

    引用:Quote: 引用:char buffer[34] = {0};

    初始化一下试试

    不行。我开始就这样做的,断住后看buffer里面元素都是超过34,即"烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫1407750548"

    问题出在你的发送程序而不是初始化程序。你只声明了34个字节的数组,你发送的字节就不能超过34字节,你需要的是调试你的发送程序。特别注意前面网友提到的:如果你的发送程序是判断’\0’作为发送结束条件的话,则你需要在34字节数组的内部的实际内容尾部添加’\0’,如果你本身就要发送34个字节有效信息,在前面的发送程序逻辑不修改的情况下,数组应该声明为35个字节,以便容纳有效信息刚好是34字节情形下的末尾’\0’。

    ------解决思路----------------------

    引用:char buffer[34];

    for(int i = 0; i 

    {

    buffer[i] = '0';

    }

    buffer[0] = 'C';

    buffer[13] = 'V';

    buffer[14] = 'I';

    buffer[17] = '1';

    buffer[18] = '2';

    buffer[19] = ch_timeStamp[0];

    buffer[20] = ch_timeStamp[1];

    buffer[21] = ch_timeStamp[2];

    buffer[22] = ch_timeStamp[3];

    buffer[23] = ch_timeStamp[4];

    buffer[24] = ch_timeStamp[5];

    buffer[25] = ch_timeStamp[6];

    buffer[26] = ch_timeStamp[7];

    buffer[27] = ch_timeStamp[8];

    buffer[28] = ch_timeStamp[9];

    buffer[32] = '1';  // 只提取一条视频

    buffer[33] = 'E';

    this->SetShowEditText("提取时间为" + strTrafficEventTime + "的视频!");

    int result = this->SendDateToClient(buffer, 34);   //在这里buffer的值就已经是:C000000000000VI001214077505480001E烫烫烫烫烫1407750548C000000000000VI001214077505480001E难道不是34字节吗,后面的乱码是因为你声明的是char数组,VS开发环境在显示的时候:认为是一个可显示字符串,显示直到’\0’结束,这只是VS显示的问题。

    ------解决思路----------------------

    void HexDump(char *buf,int len,int addr) {

    int i,j,k;

    char binstr[80];

    for (i=0;i

    if (0==(i%16)) {

    sprintf(binstr,"%08x -",i+addr);

    sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);

    } else if (15==(i%16)) {

    sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);

    sprintf(binstr,"%s  ",binstr);

    for (j=i-15;j<=i;j++) {

    sprintf(binstr,"%s%c",binstr,('!'

    }

    printf("%s\n",binstr);

    } else {

    sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);

    }

    }

    if (0!=(i%16)) {

    k=16-(i%16);

    for (j=0;j

    sprintf(binstr,"%s   ",binstr);

    }

    sprintf(binstr,"%s  ",binstr);

    k=16-k;

    for (j=i-k;j

    sprintf(binstr,"%s%c",binstr,('!'

    }

    printf("%s\n",binstr);

    }

    }

    展开全文
  • 后来一查发现全局数组和局部数组初始值结果还不一样 先来看一段代码 #include<stdio.h> int a[5]; int main() { int i; int b[5]; printf("全局数组:\n"); for(i=0;i<5;i++){ printf("%d ",a[i]);...

    写题目的时候以为数组的初始值都是0,结果提交答案出错TvT
    后来一查发现全局数组和局部数组的初始值结果还不一样

    先来看一段代码

    #include<stdio.h>
    int a[5];
    int main()
    {
    	int i;
        int b[5];
        printf("全局数组:\n");
        for(i=0;i<5;i++){
        	printf("%d ",a[i]);
        }
        printf("\n");
         printf("局部数组:\n");
        for(i=0;i<5;i++){
        	printf("%d ",b[i]);
        }
        return 0;
    }
    
    

    运行结果如下:
    在这里插入图片描述
    由此可见

    • 全局数组的初始值为0
    • 局部数组的初始值为随机数

    数组初始化

    使用函数memset

    memset函数用法
    eg:将数组初始化为0

    char str[10];
    memset(str, 0, sizeof(str));
    

    赋值

    1. 直接给每个元素赋值
      int arr[5] = {1,2,3,4,5};
    2. 给一部分赋值,后面的全部为0
      int arr[5] = {1,2};
    3. 由赋值参数个数决定数组的个数
      int arr[] = {1,2};
    4. 数组元素的值是随机分配的
      int array[4] = {};
    5. 数组元素初始化为0
      int array[4] = {0};
    展开全文
  • c语言 全局(静态)和局部数组初始化

    千次阅读 2013-11-14 17:44:09
    全局和静态数组根据规范要求初始化为0, 但是局部数组如果不显示初始化,它的值不确定。 code: result:

    全局和静态数组根据规范要求初始化为0,

    但是局部数组如果不显示初始化,它的值不确定。 但是如果初始化了最开始的几个数组元素,那么剩下的所有元素编译器将初始化为0.

    e, f, g,有初始化,则剩下的元素默认初始化为0;h无初始化, 所有值均不确定。


    code: <gcc>


    result:


    展开全文
  • 但如果定义成局部数组,则必须要先初始化 int a[10]; memset(a,0,sizeof(a)); 一般开全局数组比较大,最大约等于5*10^8,也就是开不到10^9级别的数组,当遇到这种情况,可以考虑离散化。 所以一般全局...

    例:

    int a[10];

     

    如果定义成全局数组,则此数组就会自动初始化为0

     

    但如果定义成局部数组,则必须要先初始化
     

    int a[10];
    
    memset(a,0,sizeof(a));  

     

    一般开全局数组比较大,最大约等于5*10^8,也就是开不到10^9级别的数组,当遇到这种情况,可以考虑离散化。

     

    所以一般全局数组,一维可以开到10^8,二维可以开到10^4.

    展开全文
  • C语言的数组初始化

    千次阅读 2018-07-06 15:25:45
    C语言的数组初始化  这是很基础的东西,但基础的重要性不言而喻,我敢肯定这个知识点我肯定曾经了解过,但现在,我不敢确定,由此可见纪录的重要性,这世界没有什么捷径,找对方向,然后不停重复.所以从今天开始,我会...
  • 但是,为数组的各个元素编写单独的赋值语句可能意味着大量的输入,对于大型数组而言尤其如此。例如,来看一个程序:#include #include using namespace std;int main(){const int NUM_MONTHS = 12;int days[NUM_...
  • 结构体数组初始化

    千次阅读 2021-03-17 15:24:52
    《代码大全》建议在变量定义的时候进行初始化,但是很多人,特别是新人对结构体或者结构体数组定义是一般不会初始化,或者不知道怎么初始化。 1、初始化 typedef struct _TEST_T { int i; char c[10]; }TEST_T; TEST...
  • C++: 数组初始化

    2021-04-25 21:24:56
    通过如下代码初始化一个数组初始化的规则就是不足数组大小的按默认值补位 int a[5]; //int默认0 int b[5] = {1,2}; // {1,2,0,0,0} 不足5位的0补位 string c[5] = {"a", "b"}; // {"a","b","","",""} 如果不明确...
  • 定义数组后,未初始化 #define LEN1 5 static int array_static_glogal[LEN1];//定义静态全局数组,未初始化数组成员 int array_glogal[LEN1]; //定义全局数组,但未初始化数组成员 int main() { char ...
  • 1、数组初始化 首先,我们看一下代码的输出: int[] i = new int[2]; System.out.println(i[0]); Integer[] integers = new Integer[2]; System.out.println(integers[0]); String[] s = new String[2]; System....
  • <Java Class> 1.1数组初始化

    千次阅读 2021-02-12 23:19:41
    (初始化就是为数组元素分配存储空间并制定每个元素的初始值)数组初始化有两种方式:静态初始化:初始化时由程序员指定数组元素的初始值,有系统决定数组长度;动态初始化:初始化时由程序员指定数组长度,由系统为数...
  • 数组的初始化全局数组局部数组 全局数组 对于内置数据类型,没有被显示初始化的元素会被默认初始化为0,对于整型数据,就是0,对于指针,会被初始化为nullptr; 以下代码都是基于visual studio2019 int arr[10]; int*...
  • cpp-数组初始化

    2020-12-09 15:38:50
    title: cpp-数组初始化 date: 2020/6/29 11:35:57 categories: C++ tags: 数组 初始化 在C++中,普通数组是固定长度的,标准库类型vector可理解为可扩充数组(即长度不固定)。 编译参数:g++ --std=c++2a ...
  • C++数组初始化,

    2019-11-15 16:46:06
    定义在函数体内的内置类型的对象(局部变量),如果没有显示初始化,则...或者手动初始化初始化个数小于数组长度的,剩余元素会自动初始化成默认值0 int a3[10] = {1}; 全局变量的内置类型会自定初始化为默认值0,...
  • 注意:上述这种字符数组的整体赋值只能在字符数组初始化时使用,不能用于字符数组的赋值,字符数组的赋值只能对其元素一一赋值,下面的赋值方法是错误的 char str[ ]; str="I am happy";//错误,字符数组的赋值只能...
  • C数组初始化

    2018-10-17 18:14:37
    前言 有些细节未留意过,确认一下. 实验 int main() { int i = 0; // 经常见到C数组的初始化为 char sz_buf[4] = ... // 这样初始化不好使, 只有第一个字符是0xaa, 其他字符是0x00 printf("1\n"); m...
  • java – int数组初始化

    千次阅读 2021-02-12 14:00:55
    首先要理解的是,局部变量存储...现在,发生的是,当您将数组引用声明为局部变量时,并使用数组初始化:int[] in = new int[5];数组引用(in)存储在堆栈中,为数组分配一个内存,能够在堆上保存5个整数元素(记住,对...
  • 局部数组初始化,将用随机数填充 #include&lt;cstdio&gt; using namespace std; const int MAXN = 5; int A[MAXN];//全局 static int B[MAXN];//静态 void Print(int a[MAXN]){ for (int i = 0; i &...
  • 5.4.1 数组初始化C语言允许在说明时对全局数组和静态局部数组初始化,但不能对非静态局部数组初始化。与其它变量相似,数组初始化的一般形式如下:type-specifier array_name[size1]...[sizen]={value-list};数值表...
  • Java是静态语言,所以Java的数组也是静态的,即:数组初始化后,长度不可变 静态初始化:显式指定每个数组元素的初始值,系统决定数组长度 String[] books = new String[]{"疯狂Java讲义","Thinking in Java",...
  • C语言的静态数组初始化

    千次阅读 2017-02-17 19:06:51
    数组可以初始化,即在定义时,使它包含程序马上能使用的值。  例如,下面的代码定义了一个全局数组,并用一组Fibonacci数初始化:  int iArray[10]={1,1,2,3,5,8,13,21,34,55); //初始化  void ...
  • 数组部分初始化

    2020-02-06 21:33:38
    数组部分初始化 1.一维数组,例如int a[10]={0,1,2,3,4};定义a数组有10个元素,但只给前面5个元素赋初值,后5个元素值为0。 2.二维数组,int a[3][4]={{1},{5},{9}};定义3行4列的数组a,只对各行第1列的元素赋初值,...
  • 局部变量不会被初始化,而new一个数组后会被初始化为0
  • 结构体数组在定义的同时也可以初始化,例如:structstu{char*name;//姓名intnum;//学号intage;//年龄chargroup;//所在小组floatscore;//成绩}class[5]={{"Liping",5,18,'C',145.0},{"Zhangping",4,19,'A',130.5},{...
  • 字符数组初始化问题

    千次阅读 2018-01-08 13:29:24
    在C语言编程中,当我们声明一个字符串数组的时候,常常需要把它初始化为空串。总结起来有以下三种方式: (1) char a[10]=""; (2) char a[10]={'\0'}; (3) char a[10]; str[0]='\0'; 第1,2种方式是将a数组的所有...
  • C语言数组初始化

    千次阅读 2019-01-13 23:23:20
    C语言数组初始化 wchar_t wname[128]={0}; char cname[256]={0}; 我感兴趣的是: 1. 这种赋值的结果。 2. 这种形式是否符合标准编码规则? 我找到了如下资料,可能有助于对这个知识点的掌握。 /*初始化值的...
  • 1.数组初始化方法(未包括指针) 2.解释 1.int value1[10]; value[i]的值不定,没有初始化 2.int value2[10] = {1,2}; value[0]和value[1]的值分别为1和2,而没有定义的value[i>1]则初始化为0 3.int value3[3][3...
  • 数组初始化是初学者遇到的问题之一。 有以下几种形式: 静态赋值 在全局变量中定义 int a[100];会自动初始化为全0数列 局部变量中如上例定义会出现赋值错乱。 只能使用{} int a[100] = {1,2,3}; 或者int a[100] = {...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 200,449
精华内容 80,179
关键字:

局部数组初始化