C++数组和函数中的指针
来源:互联网 发布:java将图片下载到jsp 编辑:程序博客网 时间:2024/06/06 02:51
一、指针与数组1、数组:数组是一段连续的空间,数组名表示空间第一个元素的地址。2、指针:指针包含两个内容,一个是内存地址,这个大小和机器长度有关;另一个是指针类型,这个跟指针定义的类型有关。int arr[2][3] = { { 1, 2, 3 }, { 4, 5, 6 } };int (*p1)[3] = arr;int (*p2)[2][3] = &arr;int * p3 = (int *)(arr + 1); // p3[0]=4int * p4 = (int *)(&arr + 1); // p4[-1]=6 arr是一个int(*)[3]类型,&arr是一个int(*)[2][3]类型(返回指针类型为整个数组),两者指向的地址相同。数组指针可以强制转化为指针类型(指向地址不变,只是修改了指针类型)。上例可以看出数组名实质上也是指针,储存的地址是数组第一个元素,指针类型是除过第一维的数组指针。arr[1]执行过程:arr[1]=*(arr+1)二、数组指针和指针数组1、数组指针:指向数组的指针。首先来说数组指针也是指针,只不过指针的类型是数组。例如int (*p)[3],其中()优先级大于[],表述指向一个1*3的数组指针。int a[3] = { 1, 2, 3 };int(*ptr)[3] = &a;cout << ptr[0][2] << endl;int * p=*ptr;cout << p[2] << endl;这里首先要注意第2行语句,对数组a取址,因为a本身是一个int*,而不是int (*p)[3],然后需要注意的就是第三行ptr[0]代表的是&a整体的地址(同理ptr+1,表示a后面sizeof(a)空间的首地址),所以访问a中第3个元素的时候需要ptr[0][2]。2、指针数组:首先来说指针数组是一个数组,数组里面的每个元素是一个指针。例如int *ptr[3],其中[]优先级大于*。int *ptr[2];int a[3] = { 1, 2, 3 };int x = 5;ptr[0] = &x;ptr[1] = &a[2];cout << *ptr[0] << endl;cout << *(ptr[1]-1) << endl;三、指针与函数1、函数指针:可以指向函数的指针,实质是指向函数所在的内存区域
int add(int a, int b)
{
return a + b;}void main(){int(*p)(int, int);p = add;printf("%d\n", p(1,2));}2、指针型函数函数的返回值是一个指针,这里需要注意返回的指针初始化的时候最好使用new分类内存空间,否则容易出现返回的指针指向的内存空间被释放问题。四、总结:1、数组名表示降第一维后的数组指针。2、数组指针是一个指针,它指向一个数组。3、指针数组是一个数组,它的元素是指针。4、&a(a是一个数组)是整个数组a的地址。5、指针数组可以强制转化为指针,其中地址不变,只改变指针类型 1 0
- c 数组和指针在函数参数中的转换
- C中的指针和数组
- C中的指针和数组
- C中的数组和指针
- C语言中的指针(指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针)
- 指针数组、数组指针、函数指针和堆中的分配原则
- C语言中的指针数组和数组指针
- C语言中的指针数组和数组指针
- C语言中的指针数组和数组指针
- 编写一个使用指针的c函数,交换数组a和数组b中的对应元素
- [C语言]指针数组和指针数组|函数指针和指针函数
- C语言中的函数和函数指针
- C++数组和函数中的指针
- [c++] 函数指针和函数指针数组的使用方法
- C/C++函数指针和函数指针数组用法
- C语言之指针、数组和函数
- C语言之指针、数组和函数
- C语言之指针、数组和函数
- 探索 ConcurrentHashMap 高并发性的实现机制
- iOS之旅--工具Reveal的使用
- APP推广第一步:五大ASO优化方法
- hdu 5410 CRB and His Birthday(01背包+完全背包)
- 整理 putty 自动登陆的几种方法
- C++数组和函数中的指针
- 弹幕视频社交时代:如何玩转弹幕文化
- GIT 简介及git常用命令
- android——如何从一个activity中退出程序
- 自定义cell的时候出现的错误(用的nib而不是storyboard)
- 找不到要编译的文件——path环境变量配置
- Unity3D中引用Spine2D动画研究学习(一)
- HTML5录音+播放+百度识别
- 基础总结篇之二:Activity的四种launchMode