第10章 指针(四) 地址簿-----指针变量

简介:          声明:文中观点仅代表个人,其中文字、图片未经本人许可,不得部分或全部转载,违者所造成影响后后果自负!联系本人方式:80368704@qq.com QQ:80368704       在本章前几节中,我们已经了解了什么是地址,什么是首地址(指针),进而知道了什么是首地址类型(指针类型),下面,我们就把变量或函数的首地址存入到计算机的地址簿中.在计算机C程序中,无论是记录变量的首地址,还是函数的首地址,都需要建立计算机所特有的地址簿。

 

        声明:文中观点仅代表个人,其中文字、图片未经本人许可,不得部分或全部转载,违者所造成影响后后果自负!联系本人方式:80368704@qq.com QQ:80368704

 

      在本章前几节中,我们已经了解了什么是地址,什么是首地址(指针),进而知道了什么是首地址类型(指针类型),下面,我们就把变量或函数的首地址存入到计算机地址簿中.在计算机C程序中,无论是记录变量的首地址,还是函数的首地址,都需要建立计算机所特有的地址簿。好,让我们来开始建立吧。

一、指针变量
     
前面的编程知识告诉我们,计算机程序中的数据,我们可以存放在变量中,那么,首地址作为一种重要的数据,同样也可以存放在变量中。你现在应该已经很清楚的一点是:变量需要先定义,再使用!好,我们开始定义存放首地址的变量。存放整型数时,我们定义的是int、short、long、unsigned类型的变量,存放浮点数,定义float、double等类型;也就是什么类型的数据要存放,我们就定义相应类型的变量。沿着这个思路下去,上一节我们已经知道,首地址是有类型的 ,那么,我们要存放哪种类型的首地址,就必须定义它那种类型的变量。举例如下:

       
首先:比如,现有int变量 i ;其首地址&i将被存储;我们已经知道,&i 的类型是 int * ;因此,我们需要用类型int *,定义一个变量,不妨起变量名为:p_i,于是有定义语句:int *p_i ;这样定义的p_i,就可以存放首地址&i ,当然是用赋值语句来实现存放,即:p_i=&i ;
        其次 :再如,我们已经知道,对于数组float a[3];数组名a就是其首地址,且类型float * ;因此,需先定义一个float *类型的变量:float   *p_a;而后,把将a赋给p_a:p_a=a ;
       第三:对于函数int main(void){...},其首地址就是main,类型是int (*)(void);因此,需要定义int (*)(void)类型的变量:int    (*
p_main)(void);而后,把main存入p_main中:p_main=main ;

      注:1、不清楚变量的首地址及其类型是如何来的,返回<第2节 首地址与指针>、<第3节 指针类型>!
              2、
在定义存储首地址的变量时,变量名必须紧跟着*号。
              3、存储指针的变量就是“指针变量”。

二、指针数组

      当你有1个整数10,你可以定义int i,而后赋值:i=10;i中存放的是int类型的数。如果有5个整数1,2,3,4,5,你可定义数组int j[5];而后赋值j[0]=1;j[1]=2;j[2]=3;j[3]=4;j[4]=5;数组j 中存放的是5个int类型的数。int类型的数,是一种整数,因此数组j是一种整型数组。

      当你有1个浮点数1.5,你可以定义float f,而后赋值:f=1.5;变量f中存放的是float类型的数。如果有4个浮点数1.5,2.5,3.5,4.5,你可定义数组float g[4];而后赋值g[0]=1.5;g[1]=2.5;g[2]=3.5;g[3]=4.5;数组g中存放的是4个float类型的数。float类型 的数,是浮点数,因此数组g是一种浮点型数组。

       当你有1个字符'a',你可以定义char c,而后赋值:c='a';变量c中存放的是char类型的数。如果有3个字符’a','b','c',你可定义数组char d[3];而后赋值d[0]='a';d[1]='b';d[2]='c';数组d中存放的是3个char类型的数。char类型的数,是字符,因此数组 d是一种字符数组。

       当你有1个整型变量m ,首地址&m,你可以定义int *p_m,而后赋值:p_m=&m;p_m 这个变量中存放的是int *类型的数。如果有3个整型变量m,n,o,你就有3个首地址,这时,你可定义数组int *p_n[3];而后赋值p_n[0]=&m;p_n[1]=&n;p_n[2]=&o;p_n这个数组中存放的是3个int *类型的数。int *类型的数,是指针,因此p_n是一种指针数组

三、指针的指针

       张三,其地址是中国北京复兴门外南礼XXX号,通过这个地址我们可以找到他,我们可以用下面语句, 形象的描述地址和张三的关系:地址指向了张三。正因有了这种指向作用 ,地址被称为了指针。当回到C程序中, 你已经知道了,若有变量char i,首地址(或说指针)&i可用char *p_i; 存储,即p_i=&i;因为p_i中的地址&i是指向i 的 ,所以p_i变量i的

        1、指针变量的指针
        
p_i首地址:&p_i;p_i是指针变量,因此&p_i称为指针变量的首地址, 即指针变量的指针

        2、指针变量的指针类型
        
i的类型是:char,   因此&i的类型为char *;
         p_i的类型:char *,因此&p_i的类型:char **, 又多了一个星号!

        3、存储指针变量的指针
       
既然&p_i的类型是char **,那么
你用char ** 定义一个变量:char **p_p_i; 就可用语句p_p_i=&p_i,把&p_i存入p_p_i中.

       4、总结上面如下:
             &i                                      &p_i
        i
---------------------->p_i------------------------------------->p_p_i.
       
p_i存放了i的首地址&i,p_p_i存放了p_i的首地址&p_i

        5、由于存放了&p_i,指针变量p_p_i指向了另一个指针变量p_i。

              &i                                      &p_i
        i
<-----------
----------------p_i<--------------------------------p_p_i.
        p_p_i指向p_i,p_i又指向i
       
象p_p_i这种指针变量的指针变量,简称指针的指针


        6、存储指针变量的首地址, 常见在字符串处理中, 后面我们会看到。

 

 



       这就是用指针变量存储指针的全部!对,一切的一切就是这么简单,哈,胜利向我们招手,曙光就在前头!

相关文章
|
2月前
|
存储 C语言
C语言指针与指针变量的区别指针
指针是C语言中的重要概念,用于存储内存地址。指针变量是一种特殊的变量,用于存放其他变量的内存地址,通过指针可以间接访问和修改该变量的值。指针与指针变量的主要区别在于:指针是一个泛指的概念,而指针变量是具体的实现形式。
|
2月前
魔法指针 之 指针变量
魔法指针 之 指针变量
15 1
|
2月前
|
C++
析构造函数就是为了释放内存,就是在局部指针消失前释放内存,拷贝构造函数就是以构造函数为模块,在堆里面新开一块,同一个变量在堆里面的地址
本文讨论了C++中构造函数和析构函数的作用,特别是它们在管理动态内存分配和释放中的重要性,以及如何正确地实现拷贝构造函数以避免内存泄漏。
38 2
|
2月前
|
C语言 C++
【C语言】指针篇-一篇搞定不同类型指针变量-必读指南(3/5)
【C语言】指针篇-一篇搞定不同类型指针变量-必读指南(3/5)
|
2月前
|
人工智能
魔法指针 之 指针变量的意义 指针运算
魔法指针 之 指针变量的意义 指针运算
22 0
|
3月前
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
|
4月前
|
存储 安全 C++
C++:指针引用普通变量适用场景
指针和引用都是C++提供的强大工具,它们在不同的场景下发挥着不可或缺的作用。了解两者的特点及适用场景,可以帮助开发者编写出更加高效、可读性更强的代码。在实际开发中,合理选择使用指针或引用是提高编程技巧的关键。
35 1
|
6月前
|
C语言
【C语言】:详解函数指针变量,函数指针数组及转移表
【C语言】:详解函数指针变量,函数指针数组及转移表
66 2
|
6月前
|
存储 C语言
C语言学习记录——7000+字长文-复习&学习指针(指针、地址、指针变量、指针与数组、指针与函数、指针数组、多级指针)一
C语言学习记录——7000+字长文-复习&学习指针(指针、地址、指针变量、指针与数组、指针与函数、指针数组、多级指针)一
49 1
|
6月前
|
存储 C语言
C语言学习记录——7000+字长文-复习&学习指针(指针、地址、指针变量、指针与数组、指针与函数、指针数组、多级指针)二
C语言学习记录——7000+字长文-复习&学习指针(指针、地址、指针变量、指针与数组、指针与函数、指针数组、多级指针)二
37 1