知识屋:更实用的电脑技术知识网站
所在位置:首页 > 科技

菜鸟C++自学笔记【指针】上

发表时间:2022-03-25来源:网络

指针(pointer)就含有变量和函数地址的变量。是C++语言的重要组成部分。C++程序可以声明指向任何数据类型的指针,包括结构和联合数据类型。程序可以使用表达式中任何变量的地址,只有用存储类register 声明的变量除外。程序可以将变量的地址赋予指针变量。此外,程序可以把变量的地址作为实参传递给含有指针变量形参的函数。程序可以在赋值或初始化中使用函数地址。

涉及的大纲如下,将分两个章节,本章为第一章:

指向内部类型的指针指针的算术运算符指针和数组指向结构的指针指针和地址作为函数实参从函数返回地址指向函数的指针指向指针的指针指向指针数组的指针指向const 变量的指针const 指针变量void 指针

1.指向内部类型的指针 

声明一个指针时,需要指明该指针的数据类型、带有几个星号以及指针本身的名字。如下有四种声明指针的方式:

 

     int   * temp;     // 此种写法大部分为c程序员的写法
     int *  temp;     // 此种写法c++程序的写法
     int * temp;     // 由于空白可选,因此以下这两种方法也是正确的
     int   *  temp;

 

 

Tip:指针本身就是变量。不管指针所指向的是什么?它们通常都具有相同的大小。可以将任何数值强制赋予一个指针同,并把该数值当做一个指针类型的变量地址来提取它指向的内容。

 

下面这段代码示范了一些指向C++内部类型的指针:

 

#include  " stdafx.h "
#include 


int  main( int  argc,  char *  argv[])

    
char  c = ' A ' ;
    
int  i = 123 ;
    
long  l = 54321 ;
    
float  f = 3.45 ;

    
char *  cp;
    
int *  ip;
    
long *  lp;
    
float *  fp;

    cp
=& c;
    ip
=& i;
    lp
=& l;
    fp
=& f;

    std::cout

        std::cout

         std::cout

        
1 , 2 , 3 , 4
    },
    {
         
5 , 6 , 7 , 8
    },
    {
         
9 , 10 , 11 , 12
    }
};

int  main( int  argc,  char *  argv[])

      
 
int *  cp1 =& temp[ 0 ][ 1 ];
 
int *  cp2 = temp[ 1 ] + 1 ;
 
int *  cp3 = temp[ 0 ];
 
int *  cp4 = temp[ 2 ];

 std::cout

        std::cout

        std::cout

        std::cout

    
int  emplno;
    
char *  name;
};

Emploee emplos[]
= {
    {
        
1 , " terry "
    },
    {
        
2 , " aa "
    },
    {
        
3 , " bb "
    },
    {
        
- 1 , " cc "
    }
};

int  main( int  argc,  char *  argv[])
{
 
    Emploee
*  ep = emplos;
    
while (ep -> emplno !=- 1 )
    {
        std::cout
”是有区别的,前者对己命名结构进行直接成员访问,后者通过结构的指针间接访问结构成员。

以上程序给数组增加了一个终止元素-1,以便while 循环可以判断ep 指针何时指向数组末尾。下面是另一种循环访问数组的方法,它不用给数组增加终止元素就可以找到数组末尾:

 

const   int  elments = sizeof  emplos + sizeof (Emploee);
    
while (ep
    std::cout

 
    
static   int  calendar[ 2 ][ 3 ] = {
        {
            
1 , 2 , 3
        },
        {
            
4 , 5 , 6
        } 
    };

 DisplayCalendar(calendar);
    
return   0 ;
}


void  DisplayCalendar( int  cal[][ 3 ]){
    std::cout

            
int  date = cal[week][day];
            
if (date)
                std::cout

        std::cout
> wk >> dy;
    } 
while  (wk 6 || dy 7 );
    std::cout

        {
            
1 , 2 , 3 , 4 , 5 , 6 , 7
        },
        {
            
8 , 9 , 10 , 11 , 12 , 13 , 14
        },
        {
            
15 , 16 , 17 , 18 , 19 , 20 , 21
        },
        {
             
22 , 23 , 24 , 25 , 26 , 27 , 28
        },
        {
            
29 , 30 , 31 , 32 , 33 , 34 , - 1
        }
    };
    
return   & calendar[wk][dy];
}

 

 

输入2和4得到效果如下:

如上,通过指针运算符“*”调用GetDate。这种写法提领函数返回的地址,将将返回地址值指向整数打印出来。

 

这是第一章指针的相关内容,目前工作学习娱乐一起抓,有点晕菜~!

收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜