你从上一章中了解到,我们可以得到内存地址带有引用运算符的变量&
:
int myAge = 43; // an int variable
printf("%d", myAge); // Outputs the value of myAge (43)
printf("%p", &myAge); // Outputs the memory address of myAge (0x7ffe5367e044)
亲自试一试 »
指针是一个变量商店这个内存地址另一个变量作为其值。
指针变量点到一个数据类型(喜欢int
)相同类型,并且是用*
运算符。
您正在使用的变量的地址被分配给指针:
int myAge = 43; // An int variable
int* ptr = &myAge; // A pointer variable, with the name ptr, that stores the address of myAge
// Output the value of myAge (43)
printf("%d\n", myAge);
// Output the memory address of myAge (0x7ffe5367e044)
printf("%p\n", &myAge);
// Output the memory address of myAge with the pointer (0x7ffe5367e044)
printf("%p\n", ptr);
亲自试一试 »
创建一个带有名称的指针变量ptr
, 那指着一个 int
多变的 (myAge
)。请注意,指针的类型必须与您正在使用的变量的类型匹配(int
在我们的例子中)。
使用&
运算符存储的内存地址myAge
变量,并将其赋值给指针。
现在,ptr
持有的值myAge
的内存地址。
在上面的例子中,我们使用指针变量来获取变量的内存地址(与&
参考运算符)。
您还可以使用以下命令获取指针指向的变量的值*
运算符(解引用运算符):
int myAge = 43; // Variable declaration
int* ptr = &myAge; // Pointer declaration
// Reference: Output the memory address of myAge with the pointer (0x7ffe5367e044)
printf("%p\n", ptr);
// Dereference: Output the value of myAge with the pointer (43)
printf("%d\n", *ptr);
亲自试一试 »
请注意,*
符号在这里可能会令人困惑,因为它在我们的代码中做了两个不同的事情:
int* ptr
),它创建了一个指针变量。很高兴知道:C 语言中声明指针变量有两种方法:
int* myNum;
int *myNum;
关于指针的注释
指针是 C 语言从其他编程语言中脱颖而出的原因之一,例如Python和JAVA。
它们在 C 语言中很重要,因为它们允许我们操作计算机内存中的数据。这样可以减少代码,提高性能。如果您熟悉列表、树和图形等数据结构,您应该知道指针对于实现这些结构特别有用。有时你甚至必须使用指针,例如在使用时文件。
不过要小心;必须小心处理指针,因为可能会损坏存储在其他内存地址中的数据。
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!