首页 > 其他分享 >初识C语言难点~~指针变量

初识C语言难点~~指针变量

时间:2024-06-15 13:28:23浏览次数:22  
标签:难点 变量 示例 int 代码 C语言 地址 初识 指针

目录

前言

 一、什么是指针变量

二、定义指针变量

1、代码1

2、代码2(通过指针变量取得数据)

 三、通过指针变量来交换主函数两个变量

1、【正确示例】

2、【错误示例】

四、总结 


前言

大家好又见面了!!今天要说的是指针变量。aef09e29e8704239b5f148e8968f1070.jpg

 一、什么是指针变量

指针变量是一种特殊的变量,它不同与一般的变量,一般的变量存放的是数据本身,而指针变量存放的是数据地址。简单来说,用于存放地址(指针)的变量就是指针变量。

每个内存单元都会有一个编号,内存的编号就是地址,而地址也被称为指针,所以,这个存放地址的变量叫做指针变量。

二、定义指针变量

 大家请看如下两段代码。

1、代码1

int main()
{
int a=5;
int* p=&a;
printf("%p\n",&a);
return 0;
}

我来解释一下int* p=&a;

int说明p指向的对象是int类型的;*说明p是指针变量。

现在我用一个结构图来表示他们的关系这样更直观

假如a的地址为0x0012ff38;

5                 0x0012ff38

a                  p

这表示p里面存放的是a的地址,而a等于5

2、代码2(通过指针变量取得数据)

int main()
{
int a=5;
int* p=&a;
*p=6;//解引用操作符,通过p中存放的地址,找到p所指向的对象,*p就是p所指向的对象
printf("%d\n",a);
return 0;
}

 此代码输出的结果为6

 三、通过指针变量来交换主函数两个变量

如下两段代码将会很好的展示指针变量的作用

1、【正确示例】

void Swap(int* px,int* py)
{
int z=0;
z=*px;
*px=*py;
*py=z;
}

int main()
{
int a,b;
scanf("%d%d",&a,&b);
Swap(&a,&b);
printf("%d%d",a,b);
return 0;
}

这样a,b的值就实现了交换 。

2、【错误示例】

void Swap(int x,int y)
{
int z=0;
z=x;
x=y;
y=z;
}

int main()
{
int a,b;
scanf("%d%d",&a,&b)
Swap(a,b);
printf("%d %d",a,b);
return 0;
}

然而这样写a,b的值并不能交换。

这是因为实参只能单向的传递给形参,而形参并不能传给实参。这样只是改变了形参但并不能改变实参,对实参是没有任何影响的。

所以在这种情况下指针变量的作用就展现出来了。

四、总结 

今天的分享到这里就结束啦,希望大家多多支持!

928c7674995b4e0b8866226ae1e41e72.jpg

标签:难点,变量,示例,int,代码,C语言,地址,初识,指针
From: https://blog.csdn.net/2401_84927284/article/details/139699814

相关文章

  • 初识C语言~~查找票数最高候选人
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、题目描述二、解题思路三、编写代码总结前言提示:这里可以添加本文要记录的大概内容:大家好又见面喽!!今天是刷题,二话不说开干。提示:以下是本篇文章正文内容,下面案例可供参考一、题目......
  • C语言----C语言内存函数
    1.memcpy--内存拷贝--使用和模拟实现 //memcpy基本格式://目标空间地址原空间地址被拷贝的字节个数//void*memcpy(void*destination,constvoid*source,size_tnum);//因为内存拷贝拷贝的数据有:整型数据、结构体数据、结构体数据。......
  • C语言-位运算练习-4
    题目:编写程序,接受两个int类型的参数,一个是值,一个是位的位置,如果指定位的位置为1,该函数返回1,否则返回0源代码:#include<stdio.h>intbit_location(intint_bit,intint_loca);intmain(){intint_bit,int_loca;printf("请输入你要查询的数字和对应位置是否为1......
  • C语言-位运算练习-3
    题目:编写一个程序,接受一个int类型的参数,并返回该参数中打开位的数量源代码:#include<stdio.h>voidint_bit_number(intint_bit);intmain(){inti;printf("请输入一个整数:");scanf("%d",&i);int_bit_number(i);return0;}voidint_bit_nu......
  • 2022年9月3号 辅导的大一新生自学C语言,答疑解惑聊天记录。
    C调战士......
  • 用c语言实现base64编码接口程序
    简要介绍base64Base64编码是一种常用的编码方式,主要用于将二进制数据转换为可打印的ASCII字符集,以便在不支持二进制传输的介质上安全地传输数据。......
  • C语言详解(预编译)
    Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎~~......
  • 【C语言习题】30.使用指针打印数组内容
    文章目录作业标题作业内容2.解题思路3.具体代码作业标题使用指针打印数组内容作业内容写一个函数打印arr数组的内容,不使用数组下标,使用指针。arr是一个整形一维数组。2.解题思路先定义一个数组,使用指针打印数组内容那就是说我们可以通过对指针解引用,来访问......
  • 【C语言】13.数据在内存中的存储
    文章目录1.整数在内存中的存储2.大小端字节序和字节序判断2.1什么是⼤⼩端?2.2为什么有⼤⼩端?2.3练习2.3.1练习12.3.2练习22.3.3练习32.3.4练习42.3.5练习52.3.6练习63.浮点数在内存中的存储3.1练习3.2浮点数的存储3.2.1浮点数存的过程3.2.2浮点数取的过......
  • C语言例题,五子棋在判断胜负,下棋落子上的算法参考,以及基于easyx的实现源码
    赘述首先我们需要在外部定义一个(n+4)*(n+4)且全为0的二维数组(为什么要加4见判断胜负部分)         以及鼠标消息变量mouse        (设成0只是为了判断是否是未落子区域),其中n为我们所绘制棋盘各行/列单位元个数+1如在800*800的棋盘中我们的n就是9当我们将......