指针学习二十——二级指针定义

 指针复习:


"*"的作用:
1)定义指针变量     int *p;
2)访问指针所指向的变量    *p=a;
3)int *p;p=&a;x=*p++;
将p指针的变量a的值赋给变量x,然后修改了指针的值,指针的值不再指向a。

指针变量的初始化
1)int a;int *p1=&a;int *p2=p1;
//在定义指针p1的同时给其赋值,使得p1指向变量a。
2)初始化时变量名前面的"*"只是表示它是指针变量。
3)不能用数值初始化指针的值。

指针作为参数的函数
void swap2(int *px,int *py)
在函数中改变了*px的值,就改变了其代表实参的存储内容。

指针进阶


指针数组:指针变量构成的地址
char*color[5];
操作时既可以直接对数组元素进行赋值和引用,也可以间接访问数组元素所
指向的单元内容,改变或引用该单元的内容。

指向指针的指针

二级指针的定义:


int a=10;
int *p=&a;
int* *pp=&p;
一级指针指向整型变量a,二级指针pp指向一级指针p;
p指向a   p=&a;//a和*p指向同一个单元
pp指向p    pp=&p;//p和*pp代表同一个单元。
因此: 
&&a = &p = pp等价
&a = p = *pp等价
a = *p = **pp等价

二级指针的操作: 
int a=10,b=20,t;
int *pa=&a,*pb=&b,*pt;
int **ppa=&pa,**ppb=&pb,**ppt;

//**ppa,*pa,a三者等价;
//**ppb,*pb,b三者等价;

二维数组的指针形式:
char *a[ ][ ];
二维数组名a是一个二级指针,而a[0]是一级指针;
a+1是第一行的地址,*(a+1)是第一行首元素的地址,**(a+1)是第一行首元素的值。
a+i是第i行的地址,*(a+i)是第i行首元素的地址,**(a+i)是第i行首元素的值。
a[i]等价于*(a+i)  a[i][j]等价于*(*(a+i)+j)//第i行第j列。也可以写成*(a[i]+j)。

#include<stdio.h>
#include<string.h>
//奥运五环色 
int main()
{
	int i;
	//指针数组的初始化 
	char*color[5]={;
	char str[20];
	printf("Input a color: ");
	scanf("%s",str);
	for(i=0;i<5;i++)
	{
		if(strcmp(str,color[i])==0)
			break;
			
	}
	if(i<5)
		printf("posistion: %d\n",i+1);
	else
		printf("not found\n");

	return 0;
}

二级指针处理

#include<stdio.h>
#include<string.h>
int main()
{
	int i;
	char*color[5]={"red","blue","yellow","green","black"};
	//指针数组初始化
	char**pc;
	char str[20];
	
	pc=color;//pc=&color[0]
	//pc指向数组color的首个元素
	//*pc=color[0];
	// *color[0]和**pc表示的内容都是字符'r';
	//*[pc+i]于color[i]代表同一单元。 
	printf("input a color: ");
	scanf("%s",str);
	for(i=0;i<5;i++){
		if(strcmp(str,*(pc+i))==0)
		break;
	} 
		
		if(i<5)
			printf("position:%d\n",i+1);
		else
			printf("not found\n");
	
	return 0; 
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值