c语言中的地址与指针的概念,及变量的指针和指向变量的指针变量

c语言指针基础一 指针指向的内存区域中的数据称为指针的目标,如果指针指向的目标区域是程序中的一个变量的内存空间,则这个变量称为指针的目标变量,简称为指针的目标。指针运算是指以指针变量所存放的地址量作为运算量而进行的运算,指针运算的实质就是地址运算,指针运算只能进行赋值运算,算数运算,关系运算。指针向高地址方向移动一个数据单位(char移动1字节,int移动4字节),指针指向发生变化; 阅读详情

C 语言中的地址、指针、以及变量的指针与指向变量的指针变量。

1. 地址(Address)

在 C 语言中,每个变量在内存中都有一个唯一的内存地址。这个地址是变量存储的位置的标识符。可以通过 & 运算符来获取一个变量的地址。
#include <stdio.h>

int main() {
    int x = 10;
    printf("Value of x: %d\n", x);           // 输出 x 的值
    printf("Address of x: %p\n", (void*)&x); // 输出 x 的地址

    return 0;
}

- x: 变量 x 的值是 10。
- &x: & 运算符获取变量 x 的内存地址。%p 格式说明符用于输出指针(地址),并且通常需要将地址强制转换为 void* 类型。

2. 指针(Pointer)

指针是一个特殊的变量,用于存储其他变量的内存地址。指针的类型决定了它指向的数据类型。使用指针可以间接地访问和操作内存中的数据。

定义指针:
int *p;  // 声明一个指向整数的指针

初始化指针:
int x = 10;
int *p = &x; // p 存储 x 的地址

- int *p: 声明一个指向整数的指针。
- int *p = &x: 将 p 初始化为 x 的地址。

解引用指针:
int value = *p; // 获取 p 指向的值,即 x 的

 3. 变量的指针(Pointer to a Variable)

变量的指针是指向某个变量的指针。通过指针,我们可以访问和修改变量的值。指针可以用来访问动态分配的内存、数组元素、以及其他类型的内存位置。
#include <stdio.h>

int main() {
    int x = 10;
    int *p = &x; // p 是一个指针,指向 x 的地址

    printf("Value of x: %d\n", x);           // 输出 x 的值,结果是 10
    printf("Address of x: %p\n", (void*)&x); // 输出 x 的地址

    printf("Value pointed to by p: %d\n", *p); // 使用指针 p 输出 x 的值,结果是 10
    printf("Address stored in p: %p\n", (void*)p); // 输出 p 存储的地址(即 x 的地址)

    return 0;
}

4. 指向变量的指针变量(Pointer Variable Pointing to a Variable)

指向变量的指针变量就是指针本身,它存储了另一个变量的地址。可以通过指针变量来修改指向的变量的值。
#include <stdio.h>

int main() {
    int x = 10;
    int *p = &x; // p 是一个指针变量,存储了 x 的地址

    printf("Value before increment: %d\n", *p); // 输出 x 的值,即 10
    (*p)++; // 通过指针 p 修改 x 的值,将 x 的值递增 1
    printf("Value after increment: %d\n", *p);  // 输出修改后的 x 的值,即 11

    return 0;
}

5. 操作指针的示例

后置递增 *p++:
- 先解引用 p,得到 p 指向的值,然后递增指针 p,使其指向下一个元素。

#include <stdio.h>

int main() {
    int arr[] = {10, 20, 30};
    int *p = arr; // p 指向数组的第一个元素

    printf("Value: %d\n", *p++);  // 输出 10,p 移动到 arr[1]
    printf("Next value: %d\n", *p);  // 输出 20

    return 0;
}

前置递增 ++*p:
- 先解引用 p,得到 p 指向的值,然后将这个值递增 1,最后将递增后的值存储回 p 指向的内存位置。

#include <stdio.h>

int main() {
    int arr[] = {10, 20, 30};
    int *p = arr; // p 指向数组的第一个元素

    printf("Value before increment: %d\n", *p); // 输出 10
    ++*p; // 将 p 指向的值递增 1,变为 11
    printf("Value after increment: %d\n", *p);  // 输出 11

    return 0;
}

总结

- 地址是内存中变量的位置,可以通过 & 运算符获得。
- 指针是存储地址的变量,类型决定了它指向的变量类型。
- 变量的指针是指向某个变量的指针,通过它可以访问和修改变量的值。
- 指向变量的指针变量:即是指针本身,它存储其他变量的地址,并可以用来修改变量的值。

【初识C语言地址及内存简介 文章目录 阅读详情

相关推荐

C语言——指针(1.2.指针变量的定义初始化)

上一小节,我们了解到了关于变量的储存地址,并且了解到了变量名,变量的值,变量地址之间的关系。简单回顾一下就是,需要存储的值存储在变量里面,通过访问变量地址可以找到变量对应存储的值。 这一小结我们开始学习指针变量的定义初始化: 指针的定义:存放变量地址需要一种特殊类型的变量,而这种特殊的数据类型被称作指针指针变量:具有指针类型的变量,被成为指针变量,其定义形式如下: 类型关键字 *指针变量名 类型关键字代表指针变量指向变量的类型,即指针变量的类型(举个例子) int *pa; .

一个努力的程序猿 3001

指针指针变量

为了表示指针变量他所指的变量之间的联系,在程序中用“*”表示"指向",如果定义变量 i 为指针变量,那么 *i 就表示指针变量 i 里面存放的地址指向的存储单元里面的数据,很绕吧,可以在纸上画一画。 ...

人生代码 ---- 公众号 3296

C 语言中的变量地址详解

变量地址本质上是存储它的内存单元的首地址,通常表示为一个十六进制数。我们可以使用取地址运算符来获取变量地址

m0_62599305的博客 978

C语言进阶——地址指针

声明二级指针变量的语法数据类型 **变量名数据类型是指二级指针指向的数据的数据类型。双星号(**)是说明符,用于告诉计算机,该变量是二级指针变量变量名就是二级指针变量的名称,并要符合标识符的命名规则给二级指针变量赋值给一级指针变量赋值的方式是一样的二级指针变量的基类型由数据类型双星号( ** )组成。其中双星号 ( ** )表示二级指针变量会通过地址间接跳转两次,然后根据数据类型的长度确定指针访问的数据最终位置。

ld15353133609的博客 1万+

【从零基础学习C语言地址指针—第六篇

在计算机中,所有数据都存在内存单元(空间)中,每个内存单元都有一个地址,只要通过地址就可以找到内存单元,就可以找到内存单元数据。 由于通过内存地址就能找到对应的内存单元数据内容,就说内存地址指向变量数据(内存空间),我们就把这种描述叫做指针指针就是地址指向内存空间,其实就是地址指针:内存空间的地址地址指向这个内存空间(变量数据)

博客小新 6297

C语言指针指针变量

c语言指针指针变量

qq_74222589的博客 2093

C语言指针操作(六)指向函数的指针

指向函数的指针详解,以及如何使用指向函数的指针变量做函数参数。指向函数的指针作为函数参数,是 C 语言实际应用中的一个比较深入的部分。

伯努利 9672

C语言指针操作(一)地址指针指针变量是什么

地址指针指针变量是什么?他们的区别?符号(*)在不同位置的解释?指针是C语言中的一个重要概念,也是C语言的一个重要特色;使用指针,可以使程序简洁、紧凑、高效。不掌握指针,就没有掌握C语言的精华。

伯努利 5509

C语言基础知识:地址地址

地址地址变量地址 变量的基本属性 包括以下内容 变量类型 变量变量变量存在于内存中位置 我们声明变量(如int number)时,程序根据变量的类型(如int)分配一块内存,并将这块内存的开始地址变量名关联起来。 或者,我们可以试着将变量想象成一个盒子,不同类型的变量就是装着不同类型东西的盒子。除了类型之外,变量还有一个属性就是地址(address),我们可以把这看作是贴在盒子上的一种标签。如果你把这个地址给到了张三,张三就可以利用这个地址来找到“贴着对应标签的盒子”-----

l_0_f_16的博客 1万+

c语言指针变量的值存储的是什么,指针变量的存储实质,C语言指针变量的存储详解...

相信大家都知道这样一个学习指针的观点:要想彻底理解 C 语言中的指针,首先一定要理解 C 语言变量的存储实质。谈到变量的存储,我们就不得不先说说计算机的内存概念。计算机的内存是一个用于存储数据的空间,由一系列连续的存储单元组成,它就好像电影院中的座位一样,如图 1 所示。图 1 内存中某一区域的编号在电影院中,为了保证大家能够快速找到自己的座位,每个座位都用一个唯一的编号来标识。而对计算机内存来...

weixin_39905725的博客 5671

C语言指针讲解(0基础也能看懂)

本文系统介绍了C语言指针的核心概念应用。主要内容包括:1)指针基础:地址运算、指针变量定义及操作(&、*),强调指针变量初始化的重要性;2)指针函数:详细分析了指针作为函数参数的4种交换实现方式,对比了值传递地址传递的区别,并介绍了返回指针的函数;3)指针数组:阐述了一维/二维数组的指针表示法,包括首地址偏移法指针移动法,比较了不同方法的效率;4)特殊应用:指针数组作为main函数参数实现命令行处理。通过多个代码示例(如数组逆置、内存分配等)具体演示了指针操作的常见用法注意事项。

vs_666的博客 2413

C语言基础:指针

内存地址:系统为了管理的方便,将内存划分为一个个的内存单元(通常是1个字节),并为每一个内存单元进行编号。内存单元的编号称之为该内存单元地址。一般情况下,我们每一个变量都是由多个内存单元构成的,多以每个变量的内存地址,其实就是这个变量对应的第一个内存单元的地址,也叫基地址/首地址变量指针变量地址称之为该变量指针(本质是地址)。变量地址往往是指变量在内存中第一个内存单元的编号(首地址)int a;&a ---变量a的地址,也称为变量a的指针int arr[2];

2403_88805387的博客 2547

什么是指针指针变量

一文理解指针指针变量

m0_73456910的博客 1518

C/C++「通过指针引用多维数组:指向多维数组的指针指针变量

指向多维数组的指针指针变量 以二维数组为例探究多维数组的指针变量。 1. 多维数组的地址 设有整型二维数组 a[3][4]如下: 0 1 2 3 4 5 6 7 8 9 10 11 它的定义为: int a[3][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}}; 设数组 a 的首地址为 1000,各下标变量的首地址及其值如图所示。 C语言允许把一个二维数组分解为多个一维数组来处理。因此数组a可分解为三个一维数组,即 a[0],a[1],a...

我这个代码你能看懂吗? 2430

指针变量在C语言中的使用

数据类型 *指针变量名。在定义指针变量时,需要初始化,即将指针变量赋值为某一个变量地址。int a = 12;在这个例子中,我们定义了两个变量 a b,类型分别为 int float。然后我们定义了两个指针变量 pa pb,类型分别为 int* float*,并将它们初始化为 a b 的地址。需要注意的是,不同类型变量地址类型不同。例如,a pa 的地址类型是 int*,而 b pb 的地址类型是 float*。

weixin_47712251的博客 384

【C语言指针指针

每个人都有一个物理地址,就是我们实际居住的地方。想一下网上购物,需要填写的那个送货地址,那就相当于一个指针指向我们的地址。知道地址了,就可以查到我们是谁。知道我们在哪儿了,就可以直接获取相应的地址。那么指针指针呢,送货地址,也是数据的一种,看作一个单位。也需要一个位置来存储,虽然可能是在我们的脑子中,也可能在手机收货地址中,总之得一个地方存储。

我的我的博客 377

C语言指针

C语言指针

m0_64148419的博客 1386

C语言学习笔记——指针

类型变量,可改变指向

qq_46468829的博客 1562
上一篇: c语言预处理命令(宏定义,文件包含处理,条件编译)
下一篇: c语言数组与指针,字符串与指针,指向函数的指针,malloca动态内存分配
lexc_
博客等级 码龄5年 547粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值