学点C语言(21):数据范例 – 数组与指针
当前位置:以往代写 > C/C++ 教程 >学点C语言(21):数据范例 – 数组与指针
2019-06-13

学点C语言(21):数据范例 – 数组与指针

学点C语言(21):数据范例 – 数组与指针

副标题#e#

1. 获取数组的地点无须 &,因为数组名自己就是个地点

#include <stdio.h>

int main(void)
{
  char c = 'A';
  char cs[] = "ABC";

  printf("%c,%s\n",c,cs);      /* 获取字符及字符数组的内容 */
   printf("%p,%p,%p\n",&c,cs,&cs); /* 获取字符及字符数组的地点,cs与&cs没有区别*/

  getchar();
  return 0;
}

2. 数组元素的地点是持续的:

#include <stdio.h>
int main(void)
{
char cs[] = "ABC";
printf("%p\n%p\n%p\n%p\n", cs, &cs[0], &cs[1], &cs[2]);
getchar();
return 0;
}

3. 数组名所代表的地点就是第一个元素的地点:

#include <stdio.h>

int main(void)
{
  char str[] = "ABC";
  char *p1 = str;
  char *p2 = &str[0];

  printf("%p,%p\n",p1,p2);

  getchar();
  return 0;
}

4. 通过指针会见数组元素:

#include <stdio.h>
int main(void)
{
char str[] = "ABC";
char *p = str;
printf("%c\n", *p);
printf("%c\n", *p+1);
printf("%c\n", *p+2);
printf("\n");
printf("%c\n", *p);
printf("%c\n", *++p);
printf("%c\n", *++p);
getchar();
return 0;
}


#p#副标题#e#

5. 通过指针遍历数组:

#include <stdio.h>

int main(void)
{
  char str[] = "123456789";
  char *p = str;

  int i;
  for (i = 0; i < sizeof str/sizeof str[0]; i++) {
    printf("%c\n",*p);
    p++;
  }

  getchar();
  return 0;
}

#include <stdio.h>

int main(void)
{
  char str[] = "123456789";
  char *p = str;

  while (*p != '\0') {
    printf("%c\n",*p);
    p++;
  }

  getchar();
  return 0;
}

#include <stdio.h>
#include <string.h>

int main(void)
{
  char str[] = "123456789";
  char *p = str;

  int i;
  for (i = 0; i < strlen(str); i++) {
    printf("%c\n",*(p+i));
  }

  getchar();
  return 0;
}

#include <stdio.h>

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("%d\n",*p++);
  }

  getchar();
  return 0;
}

#p#副标题#e#

6. 留意: 指针+1 是按照元素巨细移动一个位置

#include <stdio.h>

int main(void)
{
  int nums[] = {111,222,333,444};
  int *p = nums;

  int i;
  printf("%d\n",*p);
  printf("%d\n",*(p+1));

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

  getchar();
  return 0;
}

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

#include <stdio.h>

int main(void)
{
  int nums[4] = {111,222,333,444};
  int (*p)[4] = &nums;   /* 留意个中的小括号 */

  printf("%d\n",(*p)[1]); /* 用起来并不利便  */
  printf("%d\n",(*p)[2]);

  getchar();
  return 0;
}

返回“学点C语言 – 目次”

    关键字:

在线提交作业