C语言指针3(指针数组、多级指针)

一、指针数组

1、指针数组定义

#include <stdio.h>
int main(void)
{
	int a = 10, b = 20, c = 30;
	int* arr[3] = { &a,&b,&c };//定义指针数组
	for (int i = 0; i <3; i++) {
		printf("%d\n", *arr[i] );//这里的arr[]都是指针,所以要加一个*才表示取值
	}
	printf("指针数组大小:%d\n", sizeof(arr));
	printf("指针元素大小:%d", sizeof(arr[2]));
	return 0;
}/*10
   20
   30
   指针数组大小:12
   指针元素大小:4  */

2、指针数组是一个特殊的二维数组。

#include <stdio.h>
int main(void)
{
	int a[] = { 1,2,3 };
	int b[] = { 4,5,6 };
	int c[] = { 7,8,9 };
	int* arr[] = { a,b,c }; 
	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 3; j++) {
			printf("%d ", arr[i][j]);
			//printf("%d ", *(arr[i] + j)); //两者是一样的
		}
		printf("\n");
	}
	return 0;
}/*1 2 3
   4 5 6
   7 8 9*/

  第10行代码,arr[ i ] [ j ]的意思:假设 i=0,那么arr[ 0 ]就表示数组a,而再加上[ ]则表示数组a的,例如:arr[ 0 ] [ 1 ] == a[ 1 ]== 2。||  而 *(arr[i] + j))意思是:arr[ 0 ]表示为数组a首元素地址,加上偏移量就是可以找到a数组里面的元素的地址,再加个*则为值。

3 、指针数组相对于二级指针:

int* arr[];
int**p = arr;

二、多级指针

二级指针就是指向一级指针变量地址的指针。

二级指针:

int a = 10, b = 20;
int* p = &a;
int** pp = &p;

 三级指针:

int* p = &a;
int** pp = &p;
int*** ppp = &pp

 *ppp == pp == &p (二级指针)                                                                                                   **ppp == *pp == p == &a(一级指针)                                                                                      ***ppp == **pp == *p == a

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值