C语言中数组与指针,指针与函数的关系

您所在的位置:网站首页 c语言读地址中的值 C语言中数组与指针,指针与函数的关系

C语言中数组与指针,指针与函数的关系

2023-03-09 16:17| 来源: 网络整理| 查看: 265

指针可以访问数组中的元素,数组可以当做指针使用 数组和指针的区别

1.数组名表示的还是整个数组,指针存储的是地址(指针大小为4个字节或者8个字节)

2.数组名是一个常量表示数组首地址,指针是一个变量可以存储首地址,也可以存储其它地址

数组指针:重心放在指针上,他是一个指针存储的是整个数组的地址

格式:

        指针类型  (*指针名)[ 数组元素个数 ]    // 指针类型为数组地址类型,指向整个数组

        int(*p)[ 5 ];   //定义一个指针变量名为p,整个数组有5个元素

指针数组:重心放在数组上,他是一个数组,数组中存放的每一个元素是指针也就是存放的地址

格式:

        指针类型 数组名[ 元素个数 ];

指针类型:与数组的定义方式相同,因为数组中的每一个元素为指针类型

二级指针可以和指针数组相互交替使用

二维数组的定义

格式:

        一维数组中元素类型   二维数组名[ 二维数组元素个数 ] [ 一维数组元素个数 ]

例:

        int a[ 5 ][ 3 ] ;

a+1:二维数组移动一个位置==&a[ 1 ]  移动了12个字节(一维数组中有3个元素每个元素为4个字节)

a[ 0 ]+1:一维数组移动一个位置==a[ 0 ][ 1 ],移动了4个字节

 

指针与函数 函数中的形式参数为指针,再调用函数时传递地址,可以得到对应空间的地址,通过地址可以访问对应内存空间

格式:

函数类型  函数名(指向类型1 *指针名1,指向类型2 *指针名2)

{

..........

}

调用方法:

        函数名(地址1,地址2.....);

函数指针:重心放在指针上,指针存储函数名的地址

定义函数指针格式:

        指针指向的数据类型  (*变量名)  (参数列表);

例:

        int  (*p)(10,20);//指针指向的数据类型为一个返回值为int型的函数,函数中的实参为10,20

函数指针的使用

格式:

        指针名  =  &函数名;

注:将函数名的地址赋值给指针,调用时,指针相当于函数使用。

指针函数:重心在函数,它是一个函数,返回值为指针,指针中存储的为地址

格式:

        返回值类型  *  函数名(参数列表)

{

}

调用:

        函数名(参数列表);

其它指针:

1.空指针:在内存中0地址是不可用地址,不可以申请0地址来存储变量否则会报错

例:int *p=NULL;

*p=10; //报错

2.野指针:指针存储的地址不明确

例:int *z;

*z=10;//输出指针z对应的内容时报错

3.void万能指针

int *,float *只能存储对应类型的地址

void可以存储任意类型的地址

例:

int *p;

int a;float b;

void *x;

x=&a;指针指向的地址中的元素为整型数据

x=&b;//指针指向的地址中的元素为浮点型数据

p=x;//将他的地址赋值给其它指针

它可以表示一个地址,但是不能取它的值

5.define和typedef

typedef:用一串字符来代替已经有的类型(取小名)

格式:

        typedef   旧的名字  新的名字;

define:内容替换,将任意的数据类型可以用自己想要的名字替换

格式:

        define  新的名字  旧的名字

注:语句结束没有分号,是原样替换,typedef是替换类型

define可以携带参数

例:

        define

格式:

        define  新的名字(参数1,参数2...)  旧的名字;

使用方法:新的名字(实参);

例:

        define max(a,b)   a>b?:a:b   //用max替换a>b?:a:b,将参数a,b传过去

         int a,b,sum;     

        define   A(a,b)   a*b ;

        sum=A(1+2,6+2);        //sum=15

      

  



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3