您的位置 首页 主动

《C与指针》读书笔记五

指针在C语言编程中应用广泛。并且与数组有交集。很多情况下数组与指针结合使用可以事半功倍。我们可以声明一个数组,并且将其初始化。int arrary[10]={ 0, 1, 2, 3, 4,

  指针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个字节。

  已然数组经过地址索引运用的,指针也是地址,那么之间就有天然的共性。所以必定有相同之处。比方咱们要完成一个数组仿制给别的一个数组。能够运用参照一个产品手册中供给的示例代码。

  #include

  #include /* for printf */

  void tst_memcpy (void) {

  char src1 [100] = "Copy this string to dst1";

  char dst1 [100];

  char *p;

  p = memcpy (dst1, src1, sizeof (dst1));

  printf ("dst = \"%s\"\n", p);

  }

  作者经过memcpy完成了src1 数组仿制给dst1。咱们能够看一下memcpy函数的原型阐明。

  void *memcpy (

  void *dest, /* destination buffer */

  void *src, /* source buffer */

  int len); /* bytes to copy */

  dest与src都是指针,可是咱们传入参数却是数组。p = memcpy (dst1, src1, sizeof (dst1));

  dst1与src1是咱们声明的数组。正由于dst1与src1也是地址,与指针含义完全相同,所以完成了数组仿制。

  memcpy是C编译器供给规范库函数。咱们也能够自己完成一下,由于是示例,就不过多考虑安全性问题了。

  void *MemCopy( void *dest, void *src, int len)

  {

  int i;

  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);

  娴熟今后,假如遇到需求数组仿制的,能够自己着手完成。就不运用库函数了。运用指针传递一个数组,确真实传参方面功率进步许多。比方排序,只需传入数组的首地址和长度即可。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/zhudong/115152.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部