c语言数组赋值

来源:互联网 发布:淘宝店客户具体地址 编辑:程序博客网 时间:2024/05/21 17:50

最近在学c语言,把给数组赋值的方式总结一下:

1、利用malloc

 #include <stdio.h>
 #include <stdlib.h>
 void main()
 {
     int * a;
     a = (int *)malloc(2*sizeof(int));
     int i=0;
     int j=1;
     a[0] = i;
     a[1] = j;
     int times;
     for (times=0;times<sizeof(a)/sizeof(int);times++)
     {
         printf("%d\n", a[times]);
     }
     free(a);
 }


2、直接声明数组

 #include <stdio.h>
 void main()
 {
     int  a[2];
     int i=0;
     int j=1;
     a[0] = i;
     a[1] = j;
     int times;
     for (times=0;times<sizeof(a)/sizeof(int);times++)
     {
         printf("%d\n", a[times]);
     }
 }


新手注意点:

1、需要引用的头文件:输入输出要引用<stdio.h>, malloc函数要引用<stdlib.h>

2、计算数组的元素个数:sizeof(a)/sizeof(int)

3、malloc函数的原理:

      (1)分配长度为指定数量的内存块:malloc(2*sizeof(int)),这里指定存放两个整数,共8个字节

    (2)内存不在使用时,要记得释放内存:free(a);

    (3)malloc 函数返回的是 void * 类型,如果你写成:p = malloc (sizeof(int)); 则程序无法通过编译,报错:“不能将 void* 赋值给 int * 类型变量”。所以必须通过 (int *) 来将强制转换。

    (4)malloc()函数其实就在内存中找一片指定大小的空间,然后将这个空间的首地址范围给一个指针变量,这里的指针变量可以是一个单独的指针,也可以是一个数组的首地址,这要看malloc()函数中参数size的具体内容。我们这里malloc分配的内存空间在逻辑上连续的,而在物理上可以连续也可以不连续。对于我们程序员来说,我们关注的是逻辑上的连续,因为操作系统会帮我们安排内存分配,所以我们使用起来就可以当做是连续的