龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

学点 C 语言(21): 数据类型 - 数组与指针(2)

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
5. 通过指针遍历数组: #include int main(void) { char str[] = "123456789"; char *p = str; int i; for (i = 0; i printf("%cn", *p); p++; } getchar(); return 0; } #include int main(void) { char str

  5. 通过指针遍历数组:

#include 

int main(void)

{

  char str[] = "123456789";

  char *p = str;

  int i;

  for (i = 0; i < sizeof str/sizeof str[0]; i++) {

    printf("%cn", *p);

    p++;

  }

  getchar();

  return 0;

}

#include 

int main(void)

{

  char str[] = "123456789";

  char *p = str;

  while (*p != ') {

    printf("%cn", *p);

    p++;

  }

  getchar();

  return 0;

}

#include 

#include 

int main(void)

{

  char str[] = "123456789";

  char *p = str;

  int i;

  for (i = 0; i < strlen(str); i++) {

    printf("%cn", *(p+i));

  }

  getchar();

  return 0;

}

#include 

int main(void)

{

  int nums[] = {111,222,333,444};

  int *p = nums;

  int i;

  for (i = 0; i < sizeof nums / sizeof nums[0]; i++) {

    printf("%dn", *p++);

  }

  getchar();

  return 0;

}

  6. 注意: 指针+1 是根据元素大小移动一个位置

#include 

int main(void)

{

  int nums[] = {111,222,333,444};

  int *p = nums;

  int i;

  printf("%dn", *p);

  printf("%dn", *(p+1));

  printf("%dn", *p+1); /* 不是这样; 这是代表取值后再 + 1 */

  

  getchar();

  return 0;

}

  7. 上面的指针其实都是数组元素的指针, 如何声明真正的数组指针呢?

#include 

int main(void)

{

  int nums[4] = {111,222,333,444};

  int (*p)[4] = &nums;   /* 注意其中的小括号 */

  printf("%dn", (*p)[1]); /* 用起来并不方便  */

  printf("%dn", (*p)[2]);

  

  getchar();

  return 0;

}

精彩图集

赞助商链接