C语言指针实例

记录一些平常可能用到的指针例子

#include<stdio.h>

int main()
{
//------------------------------------- No.1
	char array[4] = "a01";
	
//------------------------------------- No.2
	char array1[3][4] = {"a01","a02","a03"},
		 array2[3][4] = {"b01","b02","b03"},
		 array3[3][4] = {"c01","c02","c03"};
	char *array4[4] = {"a01","a02","a03","a04"};		//定义了一个数组,包含4个char型指针(每个指针初始化一块静态内存) 【指针数组】 

//------------------------------------- No.3
	char array5[2][3][4] = {
						   {"a01","a02","a03"},
						   {"b01","b02","b03"}
						  };
	char *array6[3][4] = {							//定义了一个 3x4的矩阵,每个元素都是 char 型指针 
						 {"a01","a02","a03","a04"},
						 {"b01","b02","b03","b04"},
						 {"c01","c02","c03","c04"} 
						};
//------------------------------------- No.4
	char *p1=NULL,*p2=NULL,*p3=NULL,*p4=NULL;
	char **array7[4] = {&p1,&p2,&p3,&p4};
	char **array8[2][2] = {
						  {&p1,&p2},
						  {&p3,&p4}
						 };	
	
//------------------------------------- No.1
	puts(array);
	char *p;
	p = array;
	puts(p);			// a01
	p++;				// 指针p的步长为 1 
	puts(p);			// 01 

//------------------------------------- No.2	
	puts(array1[0]);		// a01	
	char (*p)[4];		//定义了一个 char型数组(长度为4)的指针  【数组指针】 
	p = array1;		
	puts(p[0]);			// a01
	p++;				// 指针p的步长为 4 
	puts(*p); 			// a02 		
	
	char *p;
	p = array1[1];
	puts(p);
//-----------------
	char (*p[3])[4];	//定义了三个 char 型数组(长度为4)的指针 / 定义了 char 型数组(长度为4)的指针的数组  【数组指针数组】 
	p[0] = array1;
	p[1] = array2;
	p[2] = array3;
	puts(p[1][2]);		// b03
//-----------------
	puts(array4[1]);		// a02
	char **p;			// char 型指针的指针 
	p = array4;
	puts(p[1]);			// a02
	p += 3;				// 指针p的步长为 4
	puts(*p);			// a04

//------------------------------------- No.3
	puts(array5[0][1]);	// a02	 
	char (*p)[3][4];	// char 型二维数组(3x4)的指针 
	p = array5;
	puts(p[0][0]);		// a01
	p++;
	puts((*p)[1]);		// b02
//	(*p)++;				// 错误,p是变量,可以进行赋值运算,而 (*p)是地址值,不可进行赋值运算 
	puts(*((*p)+2));	// b03
	
//-----------------	
	puts(array6[2][3]);	// c04
	char *(*p)[4];		// char型数组(长度为4)的指针的指针  【数组指针指针】 
	p = array6;
	puts(p[1][2]);		// b03

//------------------------------------- No.4
	char ***p;
	p = array7;
//-----------------	
	char **(*p)[2];
	p = array8;

	return 0;
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值