C语言中数组与指针,指针与函数的关系 |
您所在的位置:网站首页 › c语言读地址中的值 › C语言中数组与指针,指针与函数的关系 |
指针可以访问数组中的元素,数组可以当做指针使用
数组和指针的区别
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 |