大家好,今天小编关注到一个比较有意思的话题,就是关于c语言连接点的问题,于是小编就整理了1个相关介绍c语言连接点的解答,让我们一起看看吧。
学习c语言的时候指针应该怎么理解?
题主,您好!感谢邀请!
c语言作为一门经久不衰的面向的计算机语言,是很多初学程序的基础语言,而指针是c语言的精华,是其他语言所无法比拟的,同时也是很多同学感觉难的地方,下面作为从事7年计算机二级c语言培训的梁咏老师给大家做一个解释:
1. 学指针一定要先弄清变量名和地址的关系,打个比方,天津火车站和天津市车站路1号,就分别是变量名和变量地址,然后车站现在有25辆火车,就是变量的值。明白这个,就可以联想到指针,指针就是指向地址的一个箭头,相当于导游。
int a,*p 这里的p应该指向一个地址,也就是&a,而*p是一个变量,所以它对应的应该是变量a,这个关系一定要弄清。
2. 指针它是一个箭头,也就是我前面说的导游,它去旅游是不出钱的,也就是指针本身是没有存储空间的,所以在给他赋值前必须指向一个具体的地址。
3. 指针地址可以和普通变量一样进行运算,获取地址之间的间隔。
存放变量地址的变量。当时学C语言的时候对这个理解的不是很透彻,直到学了汇编,接触了更多的底层(虽然c底层已经够多了)。所以如果实在理解不了的话,去简单的学学汇编吧,挺快的。学完之后你对地址的概念就会了解的很透彻了,触类旁通,指向函数的指针什么的,其实也都差不多”。重点是理解C语言的编译还有代码编译之后的存储的机制。
所以,单独理解指针是不够的。还得了解指针指向的数据空间是如何安排的。这有可能会涉及到与具体CPU/OS相关的一些知识。如果能结合计算机体系结构知识一起理解会更深入、更准确。
比如:
各种整数(signed/unsigned long/int/short)是如何存放的?
各种浮点数(float/double/long double)是如何存放的?
数组在数据空间中是如何组织的?
字符串是如何存放的?
结构(struct)和联合(union)是如何存放的?
指针是初学C语言的一个难点。我只能尽量说得浅显一些,希望能帮到您。
传值还是传引用
当我们调用一个函数的时候,需要考虑是向函数里传递一个变量值还是传递变量引用的问题。如果不希望函数的内部处理改变外部的变量值,那么就需要传值也就是用变量名作为参数。如果希望函数的内部处理直接改变外部参数的值,那么就需要传引用,也就是把变量的指针作为参数传进去。
地址跟指针的异同
指针的值是一个地址,这是指针和地址相同的地方。但指针是有类型的而地址却没有。指针的类型的作用是让指针运算可以按照其类型的大小移动指针。在C语言中以char为例
- char a;表示a是个变量
- char *a;表示a是个指针,取指针指向的变量的值要用*a
- 不管a是指针还是变量,&a都是a的地址。
指针的应用
指针最典型的应用就是做链表。链表是通过指针收尾相接连起来的数组,由于可以从中间截断再接上非常方便快捷,链表是C语言的一个特色。另外,还有函数指针,结构体指针,这些指针可以用来传递复杂的变量,特别是使用函数指针可以做出来很多巧妙的程序。
指针的弊端
在定义指针的时候必须对指针进行初始化,也就是让指针指向一个实际的变量,否则,极易因为指向错误内存而引起系统崩溃。C语言的指针给操作系统的内存安全带来了不小的麻烦,因为它给黑客提供了窥视他人情报的手段。
总结一下,指针最主要的作用就是传递引用,在没有指针变量的语言中也需要对值和引用做规定,比如,C#中使用关键字ref来表示传递的是引用,而Java的类只能传递引用。C语言的指针尽管难理解,但却是最灵活的。抓住这一点,相信会好理解一点。
到此,以上就是小编对于c语言连接点的问题就介绍到这了,希望介绍关于c语言连接点的1点解答对大家有用。