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;
}

运行结果:

六、指针作为函数参数:

 

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

发布了76 篇原创文章 · 获赞 32 · 访问量 7921

猜你喜欢

转载自blog.csdn.net/wuwuku123/article/details/103842140