33、C语言指针与动态内存分配全解析

C语言指针与动态内存分配全解析

1. 指针与多维数组

在C语言里,指针和多维数组的结合使用十分关键。当使用像 board 这样的二维数组名时,它本质上是一个 char** 类型的地址值。对 board 进行解引用操作,会得到同样的地址,但类型变为 char* 。给这个地址加上 i ,会得到一个新的 char* 类型地址,它指向数组中偏移 i 个元素的位置,再对这个新地址解引用,就能得到该位置的内存内容。

下面是一个示例代码,展示了如何使用指针访问二维数组:

#include <stdio.h>
int main(void)
{
    char board[3][3] = {
        {'1','2','3'},
        {'4','5','6'},
        {'7','8','9'}
    };
    char *pboard = *board;             // A pointer to char
    for(int i = 0 ; i < 9 ; ++i)
        printf(" board: %c\n", *(pboard + i));
    return 0;
}

这里, pboard 被初始化为数组首元素的地址,然后通过指针算术运算遍历数组。需要注意的是,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值