数组和指针1

1.数组

   数组:一块连续内存,形同类型数据的集合

存储方式:栈

在内存中数组每个元素占用相同大小的单元格,且连续存储。一个一维数组a[n] 从a[n-1]到a[0]依次进栈,a[n]在最下面,a[0]在最上面。

一维数组名有两种情况代表整个数组:

(1)     sizeof(arr) 求整个数组的字节数;

len=sizeof(arr)/sizeof(a[0]);

(2)     &arr+1跳到数组最后一个元素后面。

   2.指针

 (1) inta=10;

         int *p=&a; 定义指针变量P,int * 声明指针类型

         printf("%d\n",*p)解引用,间接访问。

 (2)*(arr+1) 解引用

      arr=&a[0];

      *(arr)=a[0];

      *arr(arr+1)=a[1];+1加指定类型的字节数。

 (3) int a=10;

      int *p=&a;

      printf(%d\n,sizeof(p));4

      charch=‘a’;

      char *p2=&ch;

      printf(%d\n,sizeof(p2));4

 (4)sizeof(可以越界)关键字求值是在编译时,函数求值是在运行时 sizeof是关键字不是函数!!!

任何指针大小都是四个字节!

 (5)int a=2;

          int *p=&a;

          a++;

          printf(%d %d,a,*p); //3 3

  此时结果都是3,指针变量指向的是a的地址,*p 间接访问a 所以此时输出结果都为3。

(5)野指针

int a=10;             

int *p;//野指针

*p=30; //不能访问

int *p=NULL;//预防野指针的第一种方法,定义的同时初始化

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭