指针和数组

指针和数组

  1. 指针和一维数组

1.1>一维数组名

​ 一维数组名是一个指针常量,它存放的是一维数组的第一个元素的地址

   # include <stdio.h>
 
  int main(void)
  {
  int a[5]; //a是数组名 5是数组元素的个数 元素就是变量 a[0] -- a[4]
  // int a[3][4]; //3行4列 a[0][0]是第一个元素 a[i][j]第i+1行j+1列
  int b[5];
 
  //a = b;//error a是常量
  printf("%#X\n", &a[0]);
  printf("%#X\n", a);
 
  return 0;
  }
  /*
  在Vc++6.0中的输出结果是:
  --------------
  0X12FF6C
  0X12FF6C
  Press any key to continue
  --------------
  总结:
  一维数组名是个指针常量
  它存放的是一维数组第一个元素的地址
 
  */

1.2>下标和指针的关系

如果p是一个指针变量,则p[i] 永远等价于 *(p+i)

确定一个一维数组需要几个参数:

如果一个函数要处理一个一维数组,则需要接受该数组的哪些信息 (1)数组的首地址 (2)数组的长度

/*
   2020年6月13日18:58:38
一定要明白第10行的pArr[3] 和17行 19行的a[3] 是同一个变量
*/

# include <stdio.h>

void f(int * pArr, int len)
{
pArr[3] = 88;  // 10行 pArr[3] = *pArr[3]
}

int main(void)
{
int a[6] = {1,2,3,4,5,6};

printf("%d\n", a[3]); //17行

f(a,6);

printf("%d\n",a[3]);  //19行




return 0;
}

1.3>指针变量的运算

指针变量不能相加 不能相乘 也不能相除

如果两个指针变量指向的是同一块连续空间中的不同存储单元,则这两个指针才可以相减

1.4>一个指针变量到底占几个字节【非重点】

预备知识:

sizeof(数据类型)

功能:返回值就是该数据类型所占的字节数

例子:sizeof(int)=4 sizeof(char)= 1; sizeof(double) = 8;

假设p指向char类型变量

假设q指向int类型变量

假设r指向double类型变量

p q r 本身所占的字节是否一样?

答案: p q r 本身所占的字节是一样的,都是4个字节

总结:一个指针变量无论他指向的变量占几个字节,该指针变量本身只占四个字节

一个变量的地址是用该变量的首地址来表示

  1. 指针和二维数组

posted @ 2020-06-21 21:34  itsalexSun  阅读(181)  评论(0编辑  收藏  举报