今天,小编我们来了解了解什么是指针,为什么小编我没有直接的讲指针那,那是因为指针是C语言中比较难的一个知识点,首先我们必须要了解它,熟悉它,之后我们才能进一步去学习,精通。好了,多余的话,我就不说了我们开始。
为了弄清楚指针是什么,我们必须先搞清楚数据在内存中是怎么存储的,又是怎么读取的。如果我们在程序中定义了一个变量,在对程序进行编译时,系统就会给这个变量分配内存单元。编译系统根据程序中定义的变量类型,分配一定长度的空间。例如;单精度浮点型变量分配4个字节,为字符型变量分配1个字节。内存区的每一个字节有一个编号,即地址,地址相当于旅馆中的房间号。在地址所标志的内存单元中存放的数据则相当于旅馆房间中居住的旅客。由于通过地址能找到所需的变量单元,因此我们可以通过房间号去寻找房间0。因此将地址形象化地称为"指针。意思是通过它能找到以它为地址的内存单元。
如果直接可以按变量名进行的访问,称为"直接访问"方式。
还可以采用另一种称为。间接访问"的方式,即将变量 i 的地址存放在另一变量中、然后通过该变量来找到变量 i 的地址,从而访问 i 变量。由于通过地址能找到所需的变量单元,因此说,地址指向该变量单元(如同说一个房间号"指向"某一房间一样)。将地址形象化地称为"指针“,意思是通过它能找到以它为地址的内存单元(如同根据地址就能找到变量 i 的存储单元一样)。如果有一个变量专门用来存放另一变量的地址(即指针),则它称为"指针变量。
!注意区分。指针和指针变量。这两个概念。指针是一个地址,而指针变量是存放地址的变量。
我们来举一个例子;
#include
int main()
{
int a=100,b=10;
int*pointer_1,pointer_2;
pointer_1=&a;
pointer_2=&b;
printf("a=%d,b=%d\n",a,b);
printf("*pointer_1=%d,*pointer_2=%d\n",*pointer_1,*pointer_2);
return 0;
}
这个程序,就是将a与b的值的地址附加给pointer_1和pointer_2的地址上去,从而使之后的变量,调用a,b的值。
我们看完这个程序后是不是以及有了,指针的定义即 类型名 *指针变量名。一个变量的指针的含义包括两个方面,一是以存储单元编号表示的纯地址, 另一个是它指向的存储单元的数据类型。
我们应该怎样引用指针变量那?
在引用指针变量时。我们可能会遇见3种情况
(1)给指针变量赋值。如
p=&a //把a的地址赋给指针变量p
指针变量p的值是变量a的地址,p指向a。
(2)引用指针变量指向的变量。
如果已执行”p=&a;“即指针变量p指向了整型变量a,则
printf("%d",* p);
其作用是以整数形式输中指针变量p所指向的变量的值,即变量a的值。
如果有以下赋值语句;
*P=1;
表示将整数1赋给p当前所指向的变量,如果p指向变量a,则相当于把1赋给
a。
(3)引用指针变量的值。如;
printf("%o", p);
作用是以八进制数形式输出指针变量p的值,如果p指向了a。就是输出了a的地址,即&a。
!注意;& 取地址运算符。&a是变量a的地址。* 指针运算符,*p代表指针变量p指向的对象。
今天,我们就学习这么多,大家要好好消化消化哦。下次我们将讲解具体的指针内容。拜拜喽,老铁们。
举报/反馈