嵌入式学习第十三天

1.地址与指针的概念

指针是用来穿地址的变量,即指针变量,是一种数据类型

指针运算符是二级运算符,结合方向自右向左

2.指针的工作原理

(1)通过指针变量中的值到内存空间中定位

(2)从定位处开始向后偏移sizeof基类型

(3)将偏移好的那部分内存空间当作是一个基类型变量来看

   指针可以通过取地址符&与变量关联,如 p = &a;(假设a是一个整型变量)

        直接访问: i= 100;

        间接访问:int i =10;

                           int *p;

                           p = &i;

                           *p = 100;

        用途:在被调函数中修改主调函数(使用数组时可以修改主调本质也是指针)

3.指针与数组结合的应用

遍历数组中的元素

#include <stdio.h>
void printfarray(int *a,int len)
{
    int i;
    for(i =0;i<len;++i)
    {
        printf("%d\n",*(a+i));
    }
}

选择冒泡插入三种排序

#include<stdio.h>
void choicesort(int *a,int len)
{
    int i,j;
    for(i =0;i<len -1;++i)
    {
        for(j=i+1;j<len;++j)
        {
            if(*(a+i)>*(a+j))
            {
                swap(a+i,a+j);
            }
        }
    }
}

void bubblesort(int *a,int len)
{
    int i,j;
    for(j = len -1;j>0;--j)
    {
        for(i=1;i<j;++i)
        {
            if(*(a+i) >*(a+i+1))
            {
                swap(a+i,a+i+1);
            }
        }
    }
}

void insersort(int *a,int len)
{
    int i,j;
    for(i =1;i<len;++i)
    {
        int t = *(a+i);
        j = i;
        while(j>0 && *(a+j-1)>t)
        {
            *(a+j) = *(a+j-1);
            --j;
        }
        *(a+j)=t;
    }
}

二分法查找

#include<stdio.h>
int *binaryfind(int *a,int len,int n)
{
    int begin =0;
    int end = len -1;
    int mid;
    while(begin <= end)
    {
        mid =(begin + end) /2;
        if(*(a+mid)>n)
        {
            end = mid - 1;
        }
        else if(*(a+mid)<n)
        {
            begin = mid + 1;
        }
        else
        {
            return mid + a;
        }
    }
    return NULL;
}
4.使用时的注意事项

        数组越界:访问数组时要注意不要超出其定义的范围。

        指针解引用:确保指针指向有效的内存地址后再进行解引用操作,避免出现疯指针,野指针的情况导致程序崩溃。

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值