嵌入式C语言--C语言数组

一、数组的定义    

内存分配的一种形式。

        定义一个空间:

                1.大小

                2.读取方式

        数据类型 数组名[n]        n的作用域是在申请的时候

        数组名是一个常量,一定不能放在=号的左边。

        越界

                int a[100];                //n可以写任意值。

二、数组的初始化   

        空间的赋值。

        按照标签逐一处理。程序员这样赋值,工作量比较大。

        int a[10];

        int a[0] = xx;

        int a[1] = yy;

        空间定义时,就告知编译器的初始化情况,空间的第一次赋值,初始化操作。

         C语言本身,CPU内部本身一般不支持空间和空间的拷贝。 

        int a[10] = {10, 20, 30 ....};                //{}空间的限制块。

        ========>a[0] = 10; a[1] = 20; a[2] = 30...........


        数组空间的初始化和变量的初始化本质是不同的,尤其是嵌入式裸机中,空间的初始化往往需要库函数的辅助。               

        char buf[10] = "abc";        //分配了一段内存存储“abc”,buf可变。

        char *p = "abc";                //p指向常量字符串(相当于const char *p),*p不可变;

        第二次赋值,只能逐一处理。

strcpy、strncpy

        一块空间,当成了字符空间,提供了一套字符拷贝函数。

        字符拷贝函数的原则:

                内存空间和内存空间的逐一赋值的功能的一个封装体。

                一点空间中出现‘\0’这个特殊值,函数就即将结束。

        strcpy(char *dest, const char *src);        //非常严重的内存泄漏函数,工程中绝对不能使用。

        strncpy(char *dest, const char *src, size_t n);

非字符串空间

        字符空间:ASCII码编码来解码的空间======>给人看的。

        非字符空间:unsigned char buf[[10];

        一定不能使用strcpy。

        拷贝三要素:

               1.src

                2.dest

                3.个数

memcpy

        void *memcpy(void *dest, const void *src, size_t n);        //n字节

        int buf[10];

        int sensor_buf[100];

        memcpy(buf, sensor_buf, 10*sizeof(int)); 

        unsigned char buf1[10];

        unsigned char sensor_buf[100];        //00 00 00 23 45 67

        strncpy(buf, sensor_buf, 10); 【F】               //遇到0,就会停止,所以容易拷不全。

        memcpy(buf, sensor_buf, 10*sizeof(unsigned char)); 

三、指针与数组

指针数组

        char * a[100];

        sizeof(a) = 100 * 4;        //数组里面存放的是指针,指针的大小为4。

数组指针

        int a[6][5];        //后面的5修饰每次读取的块大小。

        int (*p)[5] = a;

             

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值