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
目录
相关文章
C4.
|
2月前
|
存储 算法 安全
C语言的算法结构
C语言的算法结构
C4.
21 0
|
2月前
|
存储 编译器 C语言
C语言:练习4
C语言:练习4
26 3
C语言:练习4
|
9月前
|
Java 编译器 C语言
初步认识C语言(一)
初步认识C语言(一)
51 0
|
9月前
|
Java C语言 C++
初识C语言(上)
初识C语言(上)
48 0
|
5月前
|
编译器 Linux C语言
|
5月前
|
Java 编译器 C语言
初识C语言(1)
初识C语言(1)
53 0
|
6月前
|
存储 程序员 编译器
初识C语言(4)
初识C语言(4)
58 0
|
9月前
|
存储 编译器 C语言
初识c语言(二)
初识c语言(二)
80 0
|
9月前
|
算法 IDE Java
初识C语言(1)
C语言——C生万物,C语言是一门近50年间,在TIOBE 排行榜中,C/C++位置长期霸占前三名,没有丝毫撼动,可谓经典永不过时!所以学习C语言是非常有必要的,本专栏的目的是把C语言涉及的基础知识大体过一遍,不求深度理解,后期会深入讲解。
|
9月前
|
存储 编译器 C语言
初识C语言(2)
在前面我们讲解C语言的发展历史,第一个C程序,数据类型,变量与常量,今天我们继续学习初识C语言后面的内容。
初识C语言(2)