一级指针,二级指针,数组指针和指针数组的总结

指针
  指针是一个变量,其存放的是内存单元的那块地址。
一级指针

#include<stdio.h>
int main()
{
	int a = 1;
	int *p = &a;
	printf("&a = %p\n", &a);
	printf("p = %p\n", p); //p存放的就是a的地址
	return 0;
}

wzp
二级指针
  二级指针和一级指针一样,其存放的也是地址,但是它存放的是一级指针的地址。

#include<stdio.h>
#include<stdlib.h>

int main()
{
	int a = 10;
	int *p = &a;
	int **pp = &p;
	printf("&a = %p\n", &a);
	printf("p = %p\n", p);
	printf("pp = %p\n", pp);
	system("pause");
	return 0;
}

wzp

数组指针
  定义 int(*p)[n];
  p是一个指针,而()的优先级比 * 高,因此它指向的是一个长度为n的一维数组。
  
  将一个二维数组赋值给数组指针的方法:
  int a[6][8];
  int (*p)[8];  //定义一数组指针,其指向一个含8个数据的一维数组
  p = a;  //将二维数组的首地址给指针p
  p++; //此执行相当于将p从a[0][0]指向了a[1][0]

指针数组
  定义 int * p[n];
  p是一个指针,[ ]的优先级比 * 高,由int*可以看出其是一个整型指针数组,而且包含有n个指针类型的数组元素。此处使用上面的p = a和p++会报错。
  
  将一个二维数组赋值给指针数组的方法:
  int a[6][8];
  int *p[6];  //表示其内存放着6个指针变量,分别为p[0],p[1],…,p[5]
  for(int i = 0; i < 6; i++);
  p[i] = a[i];
  
  区别:可以看得出,数组指针只是一个指向数组的指针,而指针数组则是一个数组中包含着一个或者多个指针。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值