迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > C语言 >

在 C 语言中使用指针 & 符号

作者:迹忆客 最近更新:2023/03/27 浏览次数:

本文将介绍在 C 语言中如何使用指针 & 符号的多种方法。


使用&var 符号获取给定变量的地址

指针只是持有内存地址的变量。它们用 type *var 符号来声明。指针可以被分配给任何相同类型的地址,任何指针类型都可以存储 void*指针,它被称为通用指针。既然我们有一个存储对象地址的类型,就应该有一个操作符提供对一个对象的访问。

&作为一元运算符,通常被称为取址运算符。它可以用于数据对象和函数上,以检索对象的存储地址。

假设我们声明并初始化了一个整数 x,如下例所示。在这种情况下,我们可以用取址运算符&取其地址,并将其分配给 int *xptr 变量。因此,xptr 指向的值是 10233,在后续的代码中可以利用运算符*来访问它的值。

注意 ,星号*在这里有两种不同的情况下使用。一个是声明一个指针类型的变量。另一个是用来从指针访问变量的值,后一种情况叫做去引用。

#include <stdio.h>
#include <stdlib.h>

int main() {
    int x = 10233;
    int *xptr = &x ; // xptr now points to x

    printf("x: %d\n", x);
    printf("*xptr: %d\n", *xptr);

    exit(EXIT_SUCCESS);
}

输出:

x: 10233
*xptr: 10233

使用*ptr 符号从指针访问变量的值

可以利用去引用操作符从指针中获取值,并将它们分配给相同类型的变量。请注意,*操作符不能用于 null 或无效指针,因为它会导致未定义的行为。在大多数情况下,如果尝试使用 null 指针,程序很可能会崩溃。但如果访问无效指针,可能会被忽略。无效指针可能指向内存中的某个任意对象,对它的操作仍然会进行,但它可能会破坏程序状态的正确性。

#include <stdio.h>
#include <stdlib.h>

int main() {
    int x = 10233;
    int *xptr = &x ; // xptr now points to x

    int y = *xptr ; // y now holds the value 10233
    printf("x: %d\n", x);
    printf("y: %d\n", y);

    exit(EXIT_SUCCESS);
}

输出:

x: 10233
y: 10233

使用&符号向函数传递对象的地址

利用取址运算符的最常见的例子是传递一个指向对象的指针作为函数参数。下面的例子演示了 swap 函数,它将两个整数指针作为参数。请注意,当从 main 函数中调用 swap 时,使用了&运算符来传递 xy 变量的地址。不过请注意,swap 函数主体中的*运算符表示指针的去引用。

#include <stdio.h>
#include <stdlib.h>

void swap(int *x, int *y)
{
    int tmp = *x;
    *x = *y;
    *y = tmp;
}

int main() {
    int x = 10233;
    int y = 10133;

    printf("x:%d, y:%d\n", x, y);
    swap(&x, &y);
    printf("x:%d, y:%d\n", x, y);

    exit(EXIT_SUCCESS);
}

输出:

x:10233, y:10133
x:10133, y:10233

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 C 语言中使用 typedef enum

发布时间:2023/05/07 浏览次数:181 分类:C语言

本文介绍了如何在 C 语言中使用 typedef enum。使用 enum 在 C 语言中定义命名整数常量 enum 关键字定义了一种叫做枚举的特殊类型。

C 语言中的静态变量

发布时间:2023/05/07 浏览次数:151 分类:C语言

本文介绍了如何在 C 语言中使用静态变量。在 C 语言中使用 static 变量在函数调用之间保存变量值

C 语言中生成随机数

发布时间:2023/05/07 浏览次数:64 分类:C语言

本文演示了如何在 C 语言中生成随机数。使用 rand 和 srand 函数在 C 语言中生成随机数

C 语言中的 i++ 与++i

发布时间:2023/05/07 浏览次数:83 分类:C语言

本文演示了如何在 C 语言中使用前缀增量与后缀增量运算符。C 语言中++i 和 i++ 记号的主要区别

C 语言中获取当前工作目录

发布时间:2023/05/07 浏览次数:182 分类:C语言

本文演示了如何在 C 语言中获取当前工作目录。使用 getcwd 函数获取当前工作目录的方法

C 语言中的位掩码

发布时间:2023/05/07 浏览次数:126 分类:C语言

本文介绍了如何在 C 语言中使用位掩码。使用 struct 关键字在 C 语言中定义位掩码数据

C 语言中的排序函数

发布时间:2023/05/07 浏览次数:181 分类:C语言

本文演示了如何在 C 语言中使用标准库排序函数。使用 qsort 函数对 C 语言中的整数数组进行排序

C 语言中的 extern 关键字

发布时间:2023/05/07 浏览次数:114 分类:C语言

本文介绍了如何在 C 语言中使用 extern 关键字。C 语言中使用 extern 关键字来声明一个在其他文件中定义的变量

C 语言中的 #ifndef

发布时间:2023/05/07 浏览次数:186 分类:C语言

本文介绍了如何在 C 语言中使用 ifndef。在 C 语言中使用 ifndef 保护头文件不被多次包含 C 语言中的头文件用于定义同名源文件中实现的函数的接口。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便