C语言指针 深入浅出讲解

指针在我的理解就是一个指向值的地址,地址是连续的,比如这个:

我写了一个数组,分别赋值4,5,6...11;

它们的地址分别如下:

可以看到地址增长是4,这是因为,地址虽然是连续的,但是每个地址也是有空间的,int型在我电脑是4bytes,所以这里是以4位长;

数组指针:

int (*arrayPtr)5 这里用括号是因为\[\]的优先级比较高,所以要用括号括起来,

cpp 复制代码
#include <stdio.h>

int main() {
    // 声明一个数组,包含5个整数
    int arr[5] = {1, 2, 3, 4, 5};
    
    // 声明一个指向包含5个整数的数组的指针
    int (*arrayPtr)[5];
    
    // 让指针指向我们刚刚声明的数组
    arrayPtr = &arr;
    
    // 通过数组指针访问数组元素
    printf("First element: %d\n", (*arrayPtr)[0]);
    printf("Third element: %d\n", (*arrayPtr)[2]);
    
    return 0;
}

指针数组:

cpp 复制代码
#include <stdio.h>

int main() {
    // 声明5个整数
    int a = 1, b = 2, c = 3, d = 4, e = 5;
    
    // 声明一个包含5个整数指针的数组
    int *ptrArray[5];
    
    // 让数组中的每个指针分别指向上面声明的整数
    ptrArray[0] = &a;
    ptrArray[1] = &b;
    ptrArray[2] = &c;
    ptrArray[3] = &d;
    ptrArray[4] = &e;
    
    // 通过指针数组访问整数
    printf("First element: %d\n", *ptrArray[0]);
    printf("Third element: %d\n", *ptrArray[2]);
    
    return 0;
}
相关推荐
hhhjhl1 小时前
Undici 跨端三方库仓颉适配全流程
java·开发语言·ubuntu
染指11101 小时前
158.Agent-LangGraph-子图(共享状态和不共享状态模式)
开发语言·人工智能·python·ui·agent·agents
wangchunyu1142 小时前
JAVA JVM内存结构与运行时数据区
java·开发语言·jvm
slongzhang_2 小时前
linux 递归删除源码文件|递归删除目录下 *.js,但排除 *.min.js
linux·开发语言·javascript
云和数据.ChenGuang3 小时前
Python 常见特殊方法详解:__new__、__init__、__del__、__str__、__repr__ 与 __getattribute__
开发语言·人工智能·python·1024程序员节
xyouyuweizhu3 小时前
字节流与字符流:Java IO 的两条主线该怎么选
java·开发语言·python
多弗朗皮卡丘4 小时前
C++的IO流
开发语言·c++·io流·文件io流
骑着蜗牛撵大象3274 小时前
AI Agent 工程化开发实战(三):用 StateGraph 给智能体搭一条可回放的状态流水线
java·开发语言·jvm·ai·状态管理·langgraph·stategraph
itmigrate4 小时前
Rust 里的所有权误区:不是不写 clone 就叫高性能
开发语言·后端·rust
Brilliantwxx4 小时前
【Linux】 文件访问与路径解析:目录、文件名、dentry、路径缓冲与 dcache 全解析
linux·运维·服务器·开发语言·spring