当前位置:网站首页 > 技术博客 > 正文

c语言指针的指针作用



在本教程中,您将学习指针。什么是指针,如何使用它们以及在示例的帮助下使用它们时可能遇到的常见错误。

指针是 C和C ++ 编程的强大功能。在学习指针之前,让我们学习一下C语言编程中的地址。

使用scanf()函数时,我们已多次使用地址。

scanf("%d", &var);

在此,用户输入的值存储在var变量的地址中。让我们举一个可行的实例。

#include <stdio.h> int main() {   int var = 5;   printf("var: %d ", var);   // 注意在var之前使用&   printf("address of var: %p", &var);     return 0; }

输出结果

指针(指针变量)是用于存储地址而非值的特殊变量。

这是我们如何声明指针的方法。

int* p;

在这里,我们已经声明了一个int类型的指针p。

您也可以通过以下方式声明指针。

int *p1; int * p2;

让我们再举一个声明指针的实例。

int* p1, p2;

在这里,我们声明了一个指针p1和一个普通变量p2。

让我们举个实例。

int* pc, c; c = 5; pc = &c;

在此,将5分配给c变量。并且,将c的地址分配给pc指针。

为了获得指针所指向的内容的值,我们使用了解引用运算符(*)。例如:

int* pc, c; c = 5; pc = &c; printf("%d", *pc);   // 输出: 5

此处,c的地址已分配给pc指针。为了获取存储在该地址中的值,我们使用了*pc。

让我们举个实例。

int* pc, c; c = 5; pc = &c; c = 1; printf("%d", c);    // 输出: 1 printf("%d", *pc);  // 输出: 1

我们已经将c地址分配给了pc指针。

然后,我们将的值更改c为1。由于pc和的地址c相同,因此*pc得到1。

让我们再举一个实例。

int* pc, c; c = 5; pc = &c; *pc = 1; printf("%d", *pc);  // 输出: 1 printf("%d", c);    // 输出: 1

我们已经将c地址分配给了pc指针。

然后,我们使用* pc = 1;将* pc更改为1。 由于pc和c的地址相同,因此c等于1。

让我们再举一个实例。

int* pc, c, d; c = 5; d = -15; pc = &c; printf("%d", *pc); // 输出: 5 pc = &d; printf("%d", *pc); // 输出: -15

最初,使用的地址c分配给pc指针pc = &c;。因为c是5,所以*pc给我们5。

然后,使用将地址d分配给pc指针pc = &d;。由于d是-15,所以*pc给我们-15。

让我们举一个可行的实例。

#include <stdio.h> int main() {    int* pc, c;        c = 22;    printf("c的地址: %p ", &c);    printf("c的值: %d ", c);  // 22        pc = &c;    printf("指针pc地址: %p ", pc);    printf("指针pc内容: %d ", *pc); // 22        c = 11;    printf("指针pc地址: %p ", pc);    printf("指针pc内容: %d ", *pc); // 11        *pc = 2;    printf("c的地址: %p ", &c);    printf("c的值: %d ", c); // 2    return 0; }

输出结果

该程序的用法

int c, *pc; //pc是地址,但c不是 pc = c; // Error //&c是地址,但* pc不是 *pc = &c; // Error //&c和pc都是地址 pc = &c; //c和*pc值 *pc = c;

这是指针语法初学者经常会感到困惑的示例。

#include <stdio.h> int main() {    int c = 5;    int *p = &c;    printf("%d", *p);  // 5    return 0; }

使用时为什么没有出现错误int *p = &c;?

这是因为

int *p = &c;

相当于

int *p: p = &c;

在这两种情况下,我们都创建了一个指针p(不是*p)并给它赋值&c。

为了避免这种混乱,我们可以使用如下语句:

int* p = &c;

现在您知道了什么是指针,您将在下一个教程中学习指针与数组的关系。

版权声明


相关文章:

  • arduinolcd时钟代码和接线2024-11-05 07:01:05
  • geoinformatica2024-11-05 07:01:05
  • 计算机组成包括哪些2024-11-05 07:01:05
  • 消防安全的四懂四会和四个能力分别是什么2024-11-05 07:01:05
  • pycharm中出现no module named2024-11-05 07:01:05
  • 黑客必备工具2024-11-05 07:01:05
  • 软件测试面试题库2024-11-05 07:01:05
  • scanf在c语言中如何使用2024-11-05 07:01:05
  • 王码五笔输入法86版的字根全面吗?2024-11-05 07:01:05
  • 服务器监控源码2024-11-05 07:01:05