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
目录
相关文章
|
4月前
|
Java 编译器 C#
【C语言】初识C语言
学习C语言前期需要掌握的一些基础知识
60 2
【C语言】初识C语言
|
6月前
|
C语言
C语言中%c,%d,%x,%f,%4.2f分别是什么
C语言中%c,%d,%x,%f,%4.2f分别是什么
|
6月前
|
存储 算法 C语言
链队C语言的使用
链队C语言的使用
31 0
|
6月前
|
存储 C语言
C语言:练习6
C语言:练习6
27 1
|
C语言
C语言中的坑(1)
C语言中的坑(1)
48 0
|
6月前
|
Java 程序员 编译器
什么是C语言
什么是C语言
126 0
|
6月前
|
双11 C语言
C语言:练习2
C语言:练习2
68 0
|
编译器 C语言 C++
初识C语言(2)下
初识C语言(2)
150 0
|
程序员 编译器 C语言
C语言的介绍
一、C语言是一种高级编程语言 具有广泛的应用领域和强大的功能。它以其简洁、高效和可移植性而受到广大程序员的喜爱。 二、C语言的特点之一是语法简洁明了 它采用了结构化的编程风格,使得程序的逻辑更加清晰,易于理解和维护。同时,C语言还提供了丰富的控制结构和数据类型,使得程序员可以灵活地处理各种复杂的问题。 三、C语言的另一个优点是高效性 C语言的编译器能够将源代码转换为机器语言,使得程序的执行速度非常快。这使得C语言成为开发高性能应用程序的首选语言,如操作系统、嵌入式系统和游戏引擎等。 此外,C语言还具有良好的可移植性。由于C语言的标准定义了一套统一的规范,使得同一份源代码可以在不同的平台上编译和
63 0