文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C语言之初识指针

2024-04-02 19:55

关注

指针是什么?

那到底什么是指针呢,其实指针和之前学习的变量基本相似,不过变量里面放的是一些值,而指针里面放的是它所指的地方的地址。在声明一个变量是,计算机就会为该变量预留一个位置,而指针所指☞的就是那个位置。

举个例子:

int a = 10;//设置一个变量a的值为10

int *p = &a;//p这个指针里面就放的是a的地址

而&这个符号,就是取地址符,就像我们在使用scanf函数时  scanf("%d",&a); 这个a前面的&是一个意思,就是获取到某个变量的地址。

而当你创建了一个指针是,你就要给他赋地址,否则的话它就会像那种鼠标一样在硬盘上乱找,就会随机找个地址,所以我们在创建了指针时,就一定要给他去给他赋一个位置。

指针的基础:

如何创建一个指针函数呢?

int p; 这是我们之前就知道的,创建一个整形变量p,而int *p; 就是设置一个指针p;关键就是在于中间的 *。所以我们在创建指针变量时,一定不要忘记 *;

指针的赋值:

可以在创建指针的时候就赋值像这样:int *p = &a;  也可以在创建了之后单独赋值像这样: int *p;   p = &a;   两种方法都一样,没有太大的区别,只不过一个一行代码,一个两行代码,如果我们之前已经创建了变量,那我们还是在创建指针的时候就直接给他赋值,以免后面忘了,对自己后续的程序发生影响。

那指针到底能干什么呢?


#include <stdio.h>
 
int main()
{
    int a = 10;
    int *p = &a;
    printf("a的地址为%p",&a);//这是直接输出a的地址
    printf("a的地址为%p",p);//只是输出p的指针所指的地址
    printf("a的值为%d",*p);//输出p的指针所指的地址中变量的值
 
    return 0;
}

通过这3个输出函数我们可以知道,前两个输出的都是a的地址,而第三个输出的则是a变量里的值。

所以我们可以理解为 *p 就是 a 这个变量的值,这就是最通俗易懂的理解了。

并且在输出 p 时也就是输出 a 的地址时,也是有不同的输出方式的,最基础的就是

  • %lu 是十进制的方式输出;
  • %p是以十六进制的方式输出;

之前说到 *p 可以看作是它所指的 a 变量的值,所以它也是可以再重新被赋值的,当然它的赋值不是给指针函数赋值,看似是在给指针赋值,其实改变的还是它所指的函数的值;

像这样


int a,*p;
a = 10;
p = &a;
*p = 20;
printf("a = %d",*p);

这个函数所输出的值就会为 20 ;因为指针是之间在你的地址上给你改变,所以说指针的改变相比较之前的函数就会方便很多,比如我们在学习函数的时候,会将值从主函数传到其他的函数中去做计算,但是传回来时就很麻烦,因为它一次只能传回来一个值,但是指针就不一样了,它不需要将值传回来,直接时实时将它所指的值进行改变;

像接下来这个例子,我们之前也都用函数的方式写过;


#include <stdio.h>
 
void swap(int* p, int* q)
{
	int temp;
	temp = *p;
	*p = *q;
	*q = temp;
 
}
int main()
{
	int a = 10, b = 20;
	swap(&a, &b);
	printf("a=%d  b=%d",a,b);
 
	return 0;
}

这个函数最后输出的值为

可以看到,输出的值已经发生了交换,这就是指针的强大之处吧;

可以更简单的来解决我们之前遇到的问题,所以说,学好指针是学好c语言的基础!

到此这篇关于C语言之初识指针的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯