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

指针

指针就是变量,用来存放地址的变量。

#include<stdio.h>
int main ()
{
int a=10;//现在内存中开辟一块空间
int *p=&a;//这里我们对变量a,取出它的地址,可以使用&操作符.
              //将a的地址存放在p变量中,p就是一个指针变量。          
return 0;
}

指针的大小
指针在32位的平台上的大小是4个字节,在64为平台上的大小是8个字节。

#include<stdio.h>
#include<windows.h>
int main()
{
	int a = 0;
	int *q = a;
	printf("%d\n", sizeof(*q));//4  
	system("pause");
	return 0;
}

指针的类型
变量有不同的类型,指针同样有不同的类型,在定义指针的时候用"type+ * "的方式来定义指针的,如"char *"类型的指针就是为了存放char类型的变量的地址。“int *”类型就是为了存放int类型的变量地址,等等。

char *p1=NULL;
int *p2=NULL;
int *p3=NULL;
long *p3=NULL;
float *p4=NULL;
double *p5=NULL;

指针±整数
指针的类型决定了指针向前或者向后走一步有多大(距离)。

#include<stdio.h>
int main()
{
	int n = 10;
	char *pc = (char*)&n;
	int *pi = &n;
	printf("%p\n",&n);//00E3FA44
	printf("%p\n",pc );//00E3FA44
	printf("%p\n",pc+1 );//00E3FA45(pc为char类型)
	printf("%p\n",pi );//00E3FA44
	printf("%p\n",pi+1 );//00E3FA48(pi为int类型)
	system("pause");
	return 0;
}

指针的解引用
指针的类型决定了,对指针解引用的时候有多的的权限(能操作几个字节)。例如:char的指针解引用就只能访问一个字节,而int的指针就能访问4个字节。

#include<stdio.h>
int main()
{
	int n = 0x11223344;
	char *pc = (char *)&n;
	char *pi = &n;
	*pc = 0x55;//重点在调试的过程观察内存的变化
	*pi = 0;//重点在调试的过程观察内存的变化
	return 0;
}

二级指针

指针变量也是变量,是变量就有地址。那么存放指针变量地址的变量就是二级指针。

指针和数组

可以把数组名当成地址存放在一个指针中,那么用指针就可以访问一个数组。

#include<stdio.h>
int main()
{
	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
	int *p = arr;//将数组首元素地址存入指针
	int sz = sizeof(arr) / sizeof(arr[0]);
	int i = 0;;
	for (; i < sz; i++)
	{
		printf("%2d",*(p+i));
	}
	system("pause");
	return 0;
}

指针数组

顾名思义指针数组是数组,只不过指针数组中的每一个元素都存放的指针。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值