c语言—第八章

在这里插入代码片## 善于利用指针

#include<stdio.h>

int main()
{
	int a = 2, b = 10;//通过地址查到int型占4个字节。
	int * pointer_1, * pointer_2;//通过地址值,0x00b3f9ec,可以发现地址是4个字节。
	int c[10] = {1,3,4,5,6,7,8,9,22,33};
	//int d[3][4] = { {1,3,5,7},{9,11,13,15},{17,19,21} };
	int d[3][4] = { 1,3,5,7,9,11,13,15,17,19,21};
	pointer_1 = &a;   
	pointer_2 = &b;
	printf("a=%d,b=%d\n", a, b);
	printf("*pointer_1 =%d,*pointer_2 =%d\n", *pointer_1, *pointer_2);
	printf(" &c=%p,&c[0]=%p\n", &c, &c[0]);
	printf(" &d[0][0]=%p,&d[0]=%p,&d=%p\n", &d[0][0],  &d[0],&d);
printf(" &d[0][0]+1=%p,&d[0]+1=%p,&d+1=%p\n", &d[0][0]+1, &d[0]+1, &d+1);// &d[0][0]+1 相当于加了加0x04,&d+1相当于加0x40(一个数是4个字节)
	printf(" d[0][0]+1=%d,d[0]+1=%p,d+1=%p\n", d[0][0] + 1, d[0] + 1, d + 1);// d[0]+1 相当于加了加0x04,&d+1相当于加0x10(一个数是4个字节)
	return 0;

}

在这里插入图片描述
为了验证上文所说的信息

int main()
{
	int a[3][4] = { 1,3,5,7,9,11,13,15,17,19,21,23 };
	int * p;
	int b=0;
	for (p = a[0]; p < a[0] + 12; p++)
	{
		if ((p - a[0]) % 4 == 0) printf("\n");
		printf("%4d", *p);
		b++;	
	}

	for (p = &a[0][0]; p < &a[0][0] + 12; p++)
	{
		if ((p - &a[0][0]) % 4 == 0) printf("\n");
		printf("%4d", *p);
		b++;
	}
	printf("\n");
	printf("b=%d", b);
	return 0;
}

在这里插入图片描述

int main()
{
	int a[3][4] = { 1,3,5,7,9,11,13,15,17,19,21,23 };
	int (* p)[4];
	int i, j;
	for (i = 0; i < 3;i++)
	for (j = 0; j <4; j++)
	{
		
		printf("a[%d,%d]=%d\n",i,j,*(*(a+i)+j));
		if (j/3)
		{
			printf("\n");
			
		}
			
	}
	printf("\n");
	
	return 0;
}

在这里插入图片描述

int main()
{
	int a[3][4] = { 1,3,5,7,9,11,13,15,17,19,21,23 };
	int (* p)[4];
	int b[4] = { 1,2,3,4 };
	int i, j;
	for (i = 0; i < 3;i++)
	for (j = 0; j <4; j++)
	{		
		printf("a[%d,%d]=%d\n",i,j,*(*(a+i)+j));
		if (j/3)
		{
			printf("\n");			
		}			
	}	
	printf("%p,%p,%p,%p",b, &b,b+1, &b + 1);
	printf("\n");
	return 0;
}

在这里插入图片描述
对于一维而言:a[i]=(a+i);
对于二维而言:a[i] [j] = (
(a+i)+j)

关键点:
int * a;
int * a[3];
int (*a)[3] ;
char a[]=“123223”;
char a=“123223”;
指针变量指向的是一个数,一个字符,还是一个行,一个字符串,还是一个二维数组;
int( *p)(int,int) -> int max(int,int);指向函数的指针。

指针可以指向:一个数,一个数组,一个二位数组,一个字符,一个字符串,一个函数。即一个指针变量可以指向一个变量!

区分:指针,指针变量。
指针就是一个地址。指针变量表示地址指向的变量。
同一个指针,同一个地址,可以是不同的指针变量,也就指向不同的变量。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值