C中一维数组与指针、指针数组、二级指针

一、

示例程序:

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

int main() {

	int a[5] = {1,2,3,4,5};
	int *p = a;
	int *p1 = a;
	return 0;
}

程序调试:

 二、

示例代码:

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

int main() {

	int a[5] = {1,2,3,4,5};
	int *p = a;
	int *p1 = a;
	//方法1:输出数组的值 及地址
	printf("  数组a的值\t地址为:\n");
	for (int i = 0; i < 5; i++) {
		printf("\t%d\t%d\n",a[i],a+i);
	}
	//方法2:输出数组的值 及地址
	printf("  数组a的值\t地址为:\n");
	for (int i = 0; i < 5; i++) {
		printf("\t%d\t%d\n", p[i], p + i);
	}
	_getch();
	return 0;
}

运行结果:

 

三、一维数组和指针中,以下四种方式一样:

 

 

四、指针数组

优先级:()>[]>*

[ ]和* 优先级:[]”的优先级比“*”要高

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

int main() {

	//优先级: ()>[]>*
	//指针数组 *p[]
	float a[] = { 100,200,300,400,500 };
	float *p[] = {&a[0],&a[1],&a[2],&a[3],&a[4]};
	for (int i = 0; i < 5; i++) {
		printf("%f ",*p[i]);
	}
	printf("\n");
	_getch();
	return 0;
}

运行结果:

五、二级指针

示例代码:

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

int main() {

	int i = 10;
	int *p;
	int **pp;
	p = &i;
	pp = &p;
	printf("输出i的值:\n");
	printf("i=%d\t%d\t%d\n",i,*p,**pp);
	printf("p的值:%x\t%x\t%x\n",&i,p,*pp);
	printf("pp的值:%x\t%x\n",&p,pp);
	return 0;
}

运行结果:

六、指针作为函数参数:

 

数组名就是数组地址,因此,当数组名当作函数参数时,其实就是在执行地址传递;

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值