Menu
CoddyTech

声明指针

本课属于 Coddy C 学习旅程的“逻辑与流程”单元。第 2 课,共 63 课。

现在你已经了解了指针是什么,接下来学习如何创建指针。声明指针变量时需要遵循特定的语法,以告知编译器指针将指向哪种数据类型。

声明指针的基本语法是:data_type *pointer_name;

int *ptr;        // 声明一个指向整数的指针
char *ch_ptr;    // 声明一个指向字符的指针
float *f_ptr;    // 声明一个指向浮点数的指针

星号(*)表示这是一个指针声明。它告诉编译器,这个变量将存储内存地址,而不是实际的数据值。声明 int *ptr; 时,你是在说:“ptr 是一个指针,可以存储整数变量的地址。”

如果指针尚未指向有效的内存地址,将它们初始化为 NULL 是一种好习惯。这样可以防止它们指向随机的内存位置:int *ptr = NULL;

使用 printf 打印指针地址时,请使用 %p 格式说明符。通常建议将指针强制转换为 (void *),以确保兼容性和格式正确:printf("%p", (void *)ptr);

注意,星号前的数据类型指定了指针将指向哪种数据。这一点很重要,因为不同的数据类型占用的内存空间不同,编译器需要知道这些信息,才能正确管理内存。

challenge icon

挑战

简单
编写一个 C 程序,演示正确的指针声明语法。你的程序应执行以下操作:
  1. 声明一个名为 int_ptr 的整数指针,并将其初始化为 NULL
  2. 声明一个名为 char_ptr 的字符指针,并将其初始化为 NULL
  3. 声明一个名为 float_ptr 的浮点数指针,并将其初始化为 NULL
  4. 使用 printf 和 %p 格式说明符,打印每个指针中存储的内存地址。打印时,将指针强制转换为 (void*),以确保格式正确,例如:printf("Label: %p\n", (void*)ptr);

你的输出应按以下格式显示这三个指针地址:

Integer pointer: [address]
Character pointer: [address]  
Float pointer: [address]

请注意,实际的内存地址会有所不同,但格式和标签必须与上面显示的内容完全一致。

亲手试试

#include <stdio.h>

int main() {
    // TODO: 在这里声明你的指针
    
    
    // TODO: 按要求的格式打印指针地址
    
    
    return 0;
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: C 在线编译器