C语言基础之指针进阶
来源:互联网 发布:如何搜索二次元软件 编辑:程序博客网 时间:2024/05/16 06:30
1,数组指针与指针数组
数组指针
数组指针实质上还是指针,不同之处在于它是指向数组的,多用于二维数组
如下例,int (p) [3]就是一个数组指针,可以指向第二维维度为3的二维数组,并给出了两种同样功能的初始化方式;p++后,则由arr[0]变为指向arr[1];同时,二维数组解引用时需要 ’ * * ’
#include <stdio.h>int main(){ int arr[2][3] = {{1,3,5},{2,4,6}}; // int (*p)[3] = &arr[0]; int (*p)[3]; p = arr; printf("*p = %d.\n",*(*p)); p++; printf("*p = %d.\n",**p); return 0;}
指针数组
指针数组,比如int *p [3] 实质上就是定义了三个指针,分别为p[0],p[1],p[2],可以将它们拿来单独使用
如下例:
#include <stdio.h>int main(){ int i=0; int arr[3]= {1,3,5}; int *p[3] ; p[1] = &arr[0]; p[2] = &arr[1]; p[3] = &arr[2]; for (i=1; i<4; i++) printf("p[%d] = %d\n",i,*p[i]); return 0;}
指针函数与函数指针
指针函数
本质是一个函数,它的返回值类型是一个指针
如下例:
#include <stdio.h>int* fun(int *a){ return a;}int main(void){ int a = 3; printf("%d", *(fun(&a))); return 0;}
函数指针
本质是一个指针,这个指针指向的是一个函数
#include <stdio.h>//比较两个数的大小 int func (int a,int b){ if (a<b) return b; else return a;}int main (void){ int (*p)(int,int); //定义了一个函数指针 p = &func; //指向函数 int a; a = (*p)(2,8); //调用函数 printf("较大的数是 %d\n",a); return 0;}
其中,定义函数指针时,要注意类型与函数的类型一定要匹配,比如上例,函数是int func (int a,int b),其中,func是函数名,int (int a,int b)是函数的类型名;所以定义指向它的指针时,类型名要一致,也是int (int a,int b),(*p)将p定义为一个指针,根据C语法规则,写为int ( *p) (int a,int b),其中,a,b为形参,不写也可以。
阅读全文
0 0
- C语言基础之指针进阶
- c语言基础之指针
- C语言基础之指针
- C语言基础之指针
- C语言基础之指针
- C语言基础之结构体进阶
- C语言06指针进阶
- c语言基础(四)之指针
- c语言基础案例之指针
- C语言基础复习之指针
- C语言之指针基础篇
- c语言基础之指针与函数
- C语言基础之数组、字符串、指针
- C语言基础之指针续
- ios开发之c语言基础-指针
- C语言基础之指针与数组
- C语言基础之指针1
- IOS之C语言--10指针基础
- mybatis系列十:mybatis缓存机制
- FZU
- windows如何搭建FTP服务器
- 20170623
- java 之servlet
- C语言基础之指针进阶
- 最简单的机器学习算法-线性回归和梯度下降法
- zookeeper 的简单介绍和应用
- 解决eclipse启动慢方法
- pygame的简介与安装
- Python3中的基本数据类型
- PCA与LDA
- 知识学习——jQuery文档操作
- Android 使用javaMail jar包发送邮件到指定邮箱,并可以发送图片附件