嵌入式C语言之基础知识(二)

文章介绍了指针作为内存地址的概念,以及如何声明和操作指针与数组,包括指针指向数组的能力和sizeof运算符的应用。接着,文章讨论了指针函数和函数指针的声明及使用方法,展示了一个通过函数指针调用函数的例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、指针与数组

定义

  • 指针是程序数据在内存中的地址,而指针变量则是用来保存这些地址的。
  • 数组是一种数据结构,它用来表示内存中连续存储的具有相同类型的一组数据的集合。

声明方式

//声明一个整形指针变量
int *ptr;

//声明一个一维整形数组,数组元素个数位10
int array[10];

//声明一个整形变量
int value = 1;
  • ptr是一个指针,可以用它指向一个存放整形数据的地址,比如ptr = array
  • array[10]是一个数组,它有10个整形的元素,并且他们在内存中是连续的,array是这个数组的名称,指向这个数组的首地址

操作

  • sizeof: 在一个64位的机器中,sizeof(ptr)是8,sizeof(array)是40.
  • 可以给ptr赋不同的值(指向不同的地址),但不能给array赋不同的值,比如ptr = array表示指向数组的首地址,ptr++是可以的,并且指向数组array[1]的地址,或者ptr = &value,这是ptr就指向了整形变量value的地址;但array++是不允许的。
  • 当指针指向一个数组的首地址时(ptr = array),指针和数组可以用同样的方式访问里面的元素,比如 ptr[3] 与 array[3] 是等价的;或者 *(ptr + 3)  与 *(array + 3) 也是等价的。

二、指针函数与函数指针

定义

  • 指针函数是返回值为一个指针的函数,它是用来描述函数的返回值类型的术语。
  • 函数指针的本质是指针,它指向一个函数在内存的地址。

声明方式

//声明一个指针函数
//这个函数带两个int型的参数,返回值为一个整形指针
int* function(int key, int value)
{
    static int result = 0;

    ...
    return &result;
}

//声明一个函数指针
//这个函数指针可以指向这种类型的函数(即函数名):
//函数带两个int型的参数,函数的返回值为int型,例如 int foo(int a, int b)
int (*func)(int x, int y);

函数指针的使用

//定义一个函数
int foo(int x, int y)
{
    return x + y;
}

int main(void)
{
    int ret;
    int a = 3;
    int b = 5;
    //定义一个函数指针
    int (*func)(int x, int y);

    //给函数指针赋值
    func = foo;
    //通过函数指针调用函数
    ret = (*func)(a, b);

    return ret;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值