指针与指针进阶
来源:互联网 发布:java 互斥锁 编辑:程序博客网 时间:2024/06/16 05:28
开始先来介绍一下什么是指针:
在计算机科学中,指针是编程语言中的一个对象,利用地址,它的值直接指向存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。
简单来说,指针就是变量,用来存放地址的变量。
下面介绍指针数组与数组指针:
数组和指针有什么联系吗?
答案是:没有。指针数组是一个用来存放指针的数组,而数组指针是一个指针。
给出两个例子来认识指针数组与数组指针:
int *arr1[10];①指针数组
int (*p)[10];②数组指针
①中 * 指向数组,所以它是指针数组。
②中 * 先与 p结合,说明p是一个指针变量,p指向一个数组,所以②是数组指针。注意[]的优先级要高于 * ,所以要加( )保证 * 先与 p 结合。
函数指针:
指针可以指向一个值的地址,当然也可以指向一个函数的地址,用来存放函数。那么指针怎么指向函数地址,看一段代码:
void test(){ printf("hehe");}int main(){ void(*p)(); p = test; printf("%p", p); system("pause"); return 0;}
p先和*结合,说明p是指针,指针指向的是一个函数,指
向的函数无参数,返回值类型为void。
函数指针数组
把函数的地址存放到数组中,那么这个数组就叫函数指针数组。
定义一个简单的函数指针数组:int(* parr[10])()
parr先和[]结合,说明parr是一个数组,数组的内容就是 int(*)() 类型的函数指针。
函数指针的数组的指针
函数指针的数组的指针 顾名思义就是一个指向 函数指针数组 的指针,是一个指针。
函数指针的数组的指针的定义:
void test(const char* str){ printf("%s\n", str);}int main(){ void(*pfun)(const char*) = test;//函数指针pfun void(*pfunArr[5])(const char* str);//函数指针的数组pfunArr pfunArr[0] = test; void(*(*ppfunArr)[10])(const char*) = &pfunArr;//指向函数指针数组pfunArr的指针ppfunArr printf("%p", pfun); system("pause"); return 0;}
阅读全文
0 0
- 指针与指针进阶
- 指针进阶
- 指针进阶
- C语言程序设计进阶-Chap02-指针与字符串
- 指针进阶之指针运算
- 指针与指针的指针
- 指针进阶(一)
- 指针进阶(二)
- 二级指针进阶
- 指针:指针与引用
- 指针:指针与数组
- 指针:const与指针
- 指针与指针变量
- 指针与指针类型
- 指针与指针数组
- 指针与野指针
- 指针与对象指针
- 指针与二级指针
- 图片和文字垂直居中-flex布局
- java synchronized详解
- SpringMVC(三)第一个小测试
- Linux进程的管理与调度(八) -- Linux下进程的创建过程分析(_do_fork/do_fork详解)
- Linux -free查看应用可用内存
- 指针与指针进阶
- 文档总结17-C语言基础
- E185: Cannot find color scheme 'solarized'
- 【BZOJ3282】Tree (Link-Cut Tree)
- Java-static和接口(简述)
- Codeforces Round #441 (Div. 2)-E-National Property(模拟)
- Ireport动态导出pdf,xml
- Catch That Cow POJ
- 个人总结37