亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

C 语言指针完全指南:类型、用法与最佳实践

什么是 C 语言指针?

指针 是存储另一变量内存地址的变量。通过引用地址,指针可间接访问或修改所指数据。这种间接寻址实现高效内存使用与快速执行,尤其处理大型数据结构或动态内存分配时威力巨大。

如何使用指针

以整型变量 v 为例:

int v = 0;
其值为 0,但每个变量也有唯一地址。用取地址运算符(&)获取地址:
printf("Address of v: %p\n", (void*)&v);
打印的地址为十六进制,每次运行可能不同。

下面程序演示指针存储地址:

#include <stdio.h>
int main() {
    int v = 0;
    int *y = &v; // y 保存 v 的地址
    printf("Address stored in y: %p\n", (void*)y);
    printf("Value pointed to by y: %d\n", *y);
    return 0;
}

典型输出:

Address stored in y: 0x7ffeefbff5c8
Value pointed to by y: 0

声明指针

指针声明模式:

data_type *pointer_name;
data_type 为指针指向的数据类型。合法示例:

int *ptr_int;     // 指向 int
double *ptr_double; // 指向 double
char *ptr_char;   // 指向 char

初始化指针

声明后必须用有效地址初始化。使用未初始化指针导致未定义行为。初始化语法:

pointer = &variable;
示例:
#include <stdio.h>
int main() {
    int a = 10;
    int *p = &a;
    printf("Address in p: %p\n", (void*)p);
    printf("Value via p: %d\n", *p);
    return 0;
}

C 语言指针类型

直接访问 vs 间接访问

直接访问用变量名;间接访问用指针。示例:

#include <stdio.h>
int var = 1;
int *ptr = &var;
printf("Direct: %d\n", var); // 1
printf("Indirect: %d\n", *ptr); // 1
*ptr = 48; // 通过指针修改
printf("After change, indirect: %d\n", *ptr); // 48

指针算术运算

指针指向数组元素时,加减整数按元素数移动而非字节。示例:

int arr[5] = {1,2,3,4,5};
int *p = arr; // 指向 arr[0]
for (int i = 0; i < 5; ++i) {
    printf("%d\n", *p);
    ++p; // 移至下一元素
}

关键规则:

指针与数组

指针提供简洁方式遍历数组元素:

int a[5] = {1,2,3,4,5};
int *p = a; // 等同 &a[0]
for (int i = 0; i < 5; ++i) {
    printf("%d\n", *p++); // 打印 1 到 5
}

指针与字符串

字符串是以空字符结尾的 char 数组。指针操作让字符串遍历变得简单:

#include <stdio.h>
#include <string.h>
int main() {
    char str[] = "Hello Guru99!";
    char *p = str;
    printf("First character: %c\n", *p);
    ++p;
    printf("Next character: %c\n", *p);
    // 打印整个字符串
    for (int i = 0; i < strlen(str); ++i) {
        printf("%c\n", *p++);
    }
    return 0;
}

指针优势

潜在陷阱

核心要点

C语言

  1. 探索技术的7大核心类型
  2. 3D打印全解析:原理、七大工艺分类与核心应用场景
  3. 焊接全解析:定义、类型、工艺与应用指南
  4. 铸造工艺详解:定义、类型与制造流程
  5. 精通C#变量与基础数据类型:完整指南
  6. C 语言用户自定义函数四大模式对比:参数与返回值的设计权衡
  7. 精通C语言指针:专家级实战教程
  8. C++ 指针精通:核心概念、代码示例与实战应用
  9. C 语言指针实战:从入门到高级编程
  10. C++变量类型详解:内存布局、取值范围与操作集
  11. Python 变量类型详解:数据类型的理解与使用
  12. 理解 Java 变量类型:综合指南