指针(初学者)
Posted lvfengkun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了指针(初学者)相关的知识,希望对你有一定的参考价值。
1、地址和指针的概念
(1)地址
内存区的每一个字节都有一个编号,这就是“地址”。如果在程序中定义了一个变量,在对程序进行编译时,系统就会给这个变量分配内存单元。
在C语言中,对变量的访问有两种方式:直接访问和间接访问。
直接访问:如:a=5;
系统编译时,已经对变量分配了地址,例如:若变量a分配的地址是2000,则该语句的作用是把把常数保存到地址为2000的单元。
间接访问:如:scanf("%d",&a);
调用函数时,把变量a的地址传递给函数scanf,函数先把该地址保存到一个单元中,然后把从键盘接收的数据通过所储存的地址保存到a变量中。
(2)指针
在C语言中,指针是一种特殊的变量,它是存放地址的。假设我们定义了一个指针变量int*i_pointer;可以通过语句:i_pointer=&i;来存放整型变量i的地址。
2、操作符
*:取值操作符。
&:取值操作符。
如:int i=2000;
int *pointer; /*此处的*并非取值,只是表示一个特征*/
pointer = &i;
printf("%d ",*pointer); /*此处取值*/
3、指针与指针变量
知道了一个变量的地址,就可以通过这个地址来访问这个变量,因此,又把变量的地址称为变量的“指针”。
C语言可以定义一类特殊的变量,这些变量专门用来存放变量的地址,称为指针变量。
指针变量的值(即指针变量中存放的值)是地址(即指针)。注意区分“指针”与"指针变量"这两个概念。
(1)定义一个指针变量“*”。
例:float*pointer_3; /*pointer_3是指向float型变量的指针变量*/
char*pointer; /*pointer_4是指向字符型变量的指针变量*/
可以用赋值语句使一个指针变量得到另一个变量的地址,从而使它指向一个该变量。
注:a、指针变量前的“*",表示该变量的类型为指针型变量,其一般形式为:类型说明符 *变量名;
其中,*表示这是一个指针变量,变量名即为定义的指针变量名,类型说明符表示本指针变量所指向的变量的数据类型。
例:float*pointer_1;
指针变量名是pointer_1,而不是*pointer_1。
b、在定义指针变量时必须指定基类型。值得注意的是·,只有整型变量的地址才能放到指向整型变量的指针变量中。
(2)指针变量的引用”&“。
指针变量中只能存放地址(指针),不要将一个整数(或任何其他非地址类型的数据)赋给一个指针变量,否则,编译器也会把该值当成一个地址来处理。
C语言中提供了地址运算符&来表示变量的地址。
其一般形式为:&变量名;
注:变量本身必须预先声明。
例:通过指针变量访问针型变量
#include<stdio.h> void main() { int a,b; int *pointer_1,*pointer_2; a=100; b=10; pointer_1=&a; pointer_2=&b; printf("%d,%d ",a,b); printf("%d,%d ",*pointer_1,*pointer_2); }
以上是关于指针(初学者)的主要内容,如果未能解决你的问题,请参考以下文章
译文:18个实用的JavaScript代码片段,助你快速处理日常编程任务