您的位置:

c语言学习指针,C语言指针讲解

本文目录一览:

论述C语言中指针的概念和作用,并举例说明

1、指针概念:变量的地址(计算机内存字节的编号)叫做指针,存放变量地址的变量叫指针变

量,

简言之,指针是用来存放地址的。

2、作用:指向这个变量或数组的首地址,是变量的间接引用方式。其值如果改变,变量的值或数组元素的值也会跟着改变。程序对变量的操作实际上是对变量所在的存储空间读取和写入数据。方便对变量的操作。

举例说明:

int

a=3;/*定义一个整型变量a,并赋初值3*/

int

*p;/*定义一个指针变量P*/

p=a;/*让p指向a的首地址,也就是a的地址*/

程序为a分配一个2个字节的存储单元,假如2个字节的地址分别为(ABCD1和ABCD2,唯一),那么p里面放的值就是ABCD1,不是3。这时可通过p直接引用a,实际上*p=3。以后不管a存放在内存中的哪个地方,只用通过调用p就可以引用a。这时如果令*p=4,则最后的a值也为4。对于数组,指针是指向数组的首地址。

C语言指针的用法是什么?

指针是C语言中广泛使用的一种数据类型。运用指针编程是C语言最主要的风格之一。

利用指针变量可以表示各种数据结构;能很方便地使用数组和字符串;并能象汇编语言一样处理内存地址,从而编出精练而高效的程序。指针极大地丰富了C语言的功能。

学习指针是学习C语言中最重要的一环,能否正确理解和使用指针是我们是否掌握C语言的一个标志。

同时,指针也是C语言中最为困难的一部分,在学习中除了要正确理解基本概念,还必须要多编程,上机调试。只要作到这些,指针也是不难掌握的。

C语言指针学习

用指针难,但是高效,就如:float类型它占4个字节,而指针永远是两个字节,使用它能提速,特别是什么函数那些,呵呵。说实话,能上网,直接找课件,找关于指针这章的就是。路过。。。。举例就不谈了,想学就先看书的例子。(我觉得你像以前的我一样,都觉得用指针都是浪费表情)放点耐心,指针是难点,花多点时间,对你有好处。。

如何学好c语言指针?

指针,如果是char*指针,你就把他当成char数组来理解就行了。只不过他不会告诉你越界没有,因为指针,你可以一直加下去,只会报错,不会说你越界了。数组则不能越界。一句话,指针越界编译时不报错。数组越界编译时就报错。前者运行时不一定报错,后者一定报错,后者其实本身运行不起来。

一句话,指针你就当数组来学,但要注意上面的区别。

另外,+多少,那么指针的地址就会移动多少,和数组一样,唯一要注意的就是,int指针呀,double指针呀,你要记得每一个加1代表的是移动了多少距离,移动的距离为sizeof(指针类型).

记住上面两点,指针就很好学了。

c语言指针详解

指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。数据在内存中的地址也称为指针,如果一个变量存储了一份数据的指针,我们就称它为指针变量。

计算机中所有的数据都必须放在内存中,不同类型的数据占用的字节数不一样,例如 int 占用 4 个字节,char 占用 1 个字节。

为了正确地访问这些数据,必须为每个字节都编上号码,就像门牌号、身份证号一样,每个字节的编号是唯一的,根据编号可以准确地找到某个字节。

C语言用变量来存储数据,用函数来定义一段可以重复使用的代码,它们最终都要放到内存中才能供 CPU 使用。数据和代码都以二进制的形式存储在内存中,计算机无法从格式上区分某块内存到底存储的是数据还是代码。

当程序被加载到内存后,操作系统会给不同的内存块指定不同的权限,拥有读取和执行权限的内存块就是代码,而拥有读取和写入权限(也可能只有读取权限)的内存块就是数据。

CPU 只能通过地址来取得内存中的代码和数据,程序在执行过程中会告知 CPU 要执行的代码以及要读写的数据的地址。

如果程序不小心出错,或者开发者有意为之,在 CPU 要写入数据时给它一个代码区域的地址,就会发生内存访问错误。这种内存访问错误会被硬件和操作系统拦截,强制程序崩溃,程序员没有挽救的机会。

变量名和函数名为我们提供了方便,让我们在编写代码的过程中可以使用易于阅读和理解的英文字符串,不用直接面对二进制地址,那场景简直让人崩溃。

需要注意的是,虽然变量名、函数名、字符串名和数组名在本质上是一样的,它们都是地址的助记符,但在编写代码的过程中,我们认为变量名表示的是数据本身,而函数名、字符串名和数组名表示的是代码块或数据块的首地址。

扩展资料

指针使用(* 和 )

*a可以理解为*(a),a表示取变量 a 的地址(等价于 pa),*(a)表示取这个地址上的数据(等价于 *pa),绕来绕去,又回到了原点,*a仍然等价于 a。

*pa可以理解为(*pa),*pa表示取得 pa 指向的数据(等价于 a),(*pa)表示数据的地址(等价于 a),所以*pa等价于 pa。

对星号*的总结

在我们目前所学到的语法中,星号*主要有三种用途:

1、表示乘法,例如int a = 3, b = 5, c;  c = a * b;,这是最容易理解的。

2、表示定义一个指针变量,以和普通变量区分开,例如int a = 100;  int *p = a;。

3、表示获取指针指向的数据,是一种间接操作,例如int a, b, *p = a;  *p = 100;  b = *p;。

C语言的指针怎么学习

指针是一种变量,不过它比较特殊,存储的是地址。所以操纵它又有点危险,不正确的使用指针可能造成内存泄露,程序崩溃等。但指针是c语言的精华所在,正是有了指针,我们才能用c 开发出高质量的程序。学习它要注意那么几点:

1.指针使用前一定要初始化,使它指向一个确定的内存地址,使用指向不定的指针是很危险的。

2.不用的指针要及时清理,最好让它指向NULL(即使它哪里也不指向),并释放它指向的内存地址,否则容易造成内存泄露。

3永远不要从函数中返回一个临时的指针变量。因为临时变量在函数返回后已经销毁,这样可能返回一个指向不定的指针,幸运的话,你的程序可能产生不正确的结果,不幸的话可能造成你的程序全面崩溃。