C语言中的&和*

简介: C语言中的&和*

C语言中的&和*

1、C语言中为什么存在&和*

C语言中大名鼎鼎的“指针”,想必你肯定听说过吧。

没错,C语言中的&和*就是为了指针而诞生的。

指针说白了就是直接/间接的操作(取/存)存储中的地址中的数据。

试想一下,如果没有&和*的存在,你可能每天都在为计算和寻找某个变量在哪里而发愁呢!

有了&和*之后,就不需要你手动的去计算内存中的地址。

2、&和*是什么?

&取地址运算符;

*间接寻址,也可以称为取值运算符,这样就好理解了运算符;

&的作用:如果想找到变量的地址,可以使用&(取地址)运算符。

*的作用:如果你学过链表,你经常会用到:

p->q;

那么p就是指向q的地址。

如果你学过计算机组成原理或者操作系统,里面的寄存器的寻址方式,就有间接寻址方式。

间接寻址方式:说白了就是取这个地址指向的地址的值。

如果有一个变量p,那么p就是取p指向地址的值。

3、&(取地址运算符)和*(间接寻址运算符)的使用

int i; 是变量

int *pi;是指针

int i, *pi;
 char c,*pc;

例子:

#include <stdio.h>
int main()
{
  int i, *pi;
  char c,*pc;
  //初始化i为10
  i = 10;
  //初始化c为‘a’字符
  c = 'a';
  //把pi指向i的地址
  pi = &i;
  //把pc指向c的地址
  pc = &c;
  printf("i=%d;c=%c\n",*pi,*pc);
  //做一些基本处理
  *pi = *pi + 100;
  printf("*pi+100=%d\n",*pi);
  printf("pi addr=%p;i addr=%p;pc addr=%p;c addr=%p\n",pi,&i,pc,&c);
  return 0;
}

执行结果:

i=10;c=a
*pi+100=110
pi addr=0x7ffe76034684;i addr=0x7ffe76034684;pc addr=0x7ffe76034683;c addr=0x7ffe76034683
目录
打赏
0
0
0
0
4
分享
相关文章
AI 世界生存手册(一):从LR到DeepSeek,模型慢慢变大了,也变强了
大家都可以通过写 prompt 来和大模型对话,那大模型之前的算法是怎样的,算法世界经过了哪些比较关键的发展,最后为什么是大模型这条路线走向了 AGI,作者用两篇文章共5.7万字详细探索一下。
AI 世界生存手册(一):从LR到DeepSeek,模型慢慢变大了,也变强了
除了 Pinia,还有哪些状态管理库可以实现类似的中间件功能?
除了 Pinia,还有哪些状态管理库可以实现类似的中间件功能?
181 73
阿里云中小企业专享上云权益与上云抵扣金申请流程参考
阿里云针对企业用户推出上云权益和上云抵扣金福利。中小企业如未在阿里云活动页找到适合的产品或解决方案,可通过专门通道申请上云权益,阿里云将派专人提供解决方案和优惠。此外,阿里云为初创企业推出了创业者计划,成功加入该计划后,阿里云为初创企业提供最低3500元、最高100万元的上云抵扣金,助其零成本享受云资源和技术服务。这些措施简化申请流程,为中小企业提供实质性经济支持,让其更轻松享受云技术的便利。
阿里云中小企业专享上云权益与上云抵扣金申请流程参考
程序与技术分享:Android使用Dagger注入的方式初始化对象的简单使用
程序与技术分享:Android使用Dagger注入的方式初始化对象的简单使用
224 0
Vue中的mixin和extend有什么区别?
Vue中的mixin和extend有什么区别?
192 0
(C语言版)力扣(LeetCode)题库1-5题解析
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
基于Kibana Discover筛选数据,自由搜索航班信息
通过本教程,您将体验Kibana的Discover功能,包括筛选数据(查询栏下添加筛选或在查询栏中使用KQL语法筛选)、保存搜索和导出搜索结果为CSV报告。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问