网站首页 > 资源文章 正文
指针在C语言编程中应用广泛。并且与数组有交集。很多情况下数组与指针结合使用可以事半功倍。我们可以声明一个数组,并且将其初始化。
int arrary[10]={ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
数组在声明时可以同时初始化。以上语句的结果就是声明一个数组,同时初始化该数组。等价于以下语句:
int arrary[10];
int i;
for( i = 0; i < sizeof (arrary ); i++ )
{
arrary[i] = i;
}
初始化结束后,在内存中存储如下:
数组是通过数组名和下标的结合使用的。arrary是数组名,相当于数组的第一个成员的首地址。下标相当于偏移量。arrary[2]的地址其实相当于arrary+2*sizeof(int)。int是数据类型。在有的系统中是4,在有些系统中是2。在此我们假设int类型是4个字节。
既然数组通过地址索引使用的,指针也是地址,那么之间就有天然的共性。所以必定有相同之处。比如我们要实现一个数组复制给另外一个数组。可以使用参照一个产品手册中提供的示例代码。
作者通过memcpy实现了src1 数组复制给dst1。我们可以看一下memcpy函数的原型说明。
dst1与src1是我们声明的数组。正因为dst1与src1也是地址,与指针意义完全相同,所以实现了数组复制。
memcpy是C编译器提供标准库函数。我们也可以自己实现一下,因为是示例,就不过多考虑安全性问题了。
void *MemCopy( void *dest, void *src, int len)
char *temp;
temp = dest;
for( i =0; i < len; i++)
{
temp[i] = src[i];
}
return dest;
}
temp[i] = src[i];我们仍然按照数组方式处理了指针。在这本书上,我看到一种表示方法。arrary[2]其实等价于*(arrary+2).也就是
arrary[2] = 2;等价于*(arrary+2)=2;
m = arrary[2]; 等价于m =*(arrary+2);
熟练以后,如果遇到需要数组复制的,可以自己动手实现。就不使用库函数了。使用指针传递一个数组,确实在传参方面效率提高很多。比如排序,只要传入数组的首地址和长度即可。
- 上一篇: linux内核分析 SLAB原理及实现
- 下一篇: 高性能异步io机制:io_uring
猜你喜欢
- 2025-04-27 JIT原理简单介绍
- 2025-04-27 LSM Oops 内存错误根因分析与解决
- 2025-04-27 Linux系统编程—共享内存之mmap
- 2025-04-27 C++深拷贝和浅拷贝应用实例
- 2025-04-27 消息队列概念及其实现细节
- 2025-04-27 基于FIMC接口的CMOS摄像头驱动分析与设计
- 2025-04-27 高性能异步io机制:io_uring
- 2025-04-27 linux内核分析 SLAB原理及实现
- 2025-04-27 RapidJSON完全指南:高性能JSON解析与生成的最佳实践
- 2025-04-27 常用网络协议整理笔记(一)
你 发表评论:
欢迎- 04-27JIT原理简单介绍
- 04-27LSM Oops 内存错误根因分析与解决
- 04-27Linux系统编程—共享内存之mmap
- 04-27C++深拷贝和浅拷贝应用实例
- 04-27消息队列概念及其实现细节
- 04-27基于FIMC接口的CMOS摄像头驱动分析与设计
- 04-27高性能异步io机制:io_uring
- 04-27《C与指针》读书笔记五
- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)