那些年,搞不清的指针

函数指针

函数指针的定义
函数返回值(*pf) 函数形参列表;此时pf未初始化;
用与其类型匹配的函数名对其赋值即可


数组指针

二维数组数组名是一个二级指针,二级指针+1指向下一行;
形如int (*p)[10],int * a[10], p,a也是个二级指针;
二级指针解一次指针,得到一级指针,此一级指针+1指向下一个元素;
二级指针加[]等同于解一次指针

同理,若有

int a[]={1,2,3,4}

则&a为二级指针


#include<iostream>

using namespace std;

int main()
{
    int v[2][10]={{1,2,3,4,5,6,7,8,9,10},{11,12,13,14,15,16,17,18,19,20}};
    int (*a)[10]=v;

    cout<<"&v[0][0]: "<<&v[0][0]<<endl;
    cout<<"&v[0][1]: "<<&v[0][1]<<endl;
    cout<<"&v[1][0]: "<<&v[1][0]<<endl;

    cout<<"v是二级指针: "<<v<<" *v:"<<*v<<" **v:"<<**v<<endl;
    cout<<"a是二级指针: "<<a<<" *a:"<<*a<<" **a:"<<**a<<endl;
    cout<<"*v是一级指针 "<<*v<<endl;
    cout<<"*a是一级指针 "<<*a<<endl;
    cout<<"**a指针已解完,表示元素: "<<**a<<endl;

    cout<<"v+1:二级指针+1,指向下一行的首地址: "<<v+1<<" *(v+1):"<<*(v+1)<<"  **(v+1)="<<**(v+1)<<endl;
    cout<<"a+1:二级指针+1,指向下一行的首地址: "<<a+1<<" *(a+1):"<<*(a+1)<<"  **(a+1)="<<**(a+1)<<endl;
    cout<<"*v+1:一级指针+1,指向下一个元素的首地址: "<<*v+1<<"  *(*v+1)="<<*(*v+1)<<endl;
    cout<<"*a+1:一级指针+1,指向下一个元素的首地址: "<<*a+1<<"  *(*a+1)="<<*(*a+1)<<endl;
    cout<<**a+1<<endl;

}
image.png

image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,534评论 3 44
  • C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程...
    小辰带你看世界阅读 981评论 0 6
  • 第十章 指针 1. 地址指针的基本概念: 在计算机中,所有的数据都是存放在存储器中的。一般把存储器中的一个字节称为...
    坚持到底v2阅读 1,113评论 2 3
  • 桃语(终) 耳边全是呼啸的风声,因为修为一下尽失的缘故,甚至呼吸都有点困难,可他不想停下。 直到看到那个熟悉的背影...
    二缈阅读 7,136评论 4 19
  • 今天晚上我看了《国学小名士》他们是从一次又一此的对战出来了这一次是7星对战她们的问是页个个都太难,那些上去的人不一...
    yan780218阅读 157评论 0 0