200813_C指针

一、学习的知识点

指针

  1. 定义指针变量记得初始化,或者初始化为NULL:void *p=NULL;
  2. 指针变量存放的是地址,可以比较大小,但必须是同类型。
  3. 数组作为函数形参的三种写法:p【】,p【20】,*p
  4. NULL//值为0,无类型的指针,stdio.h
  5. char *temp=“hello”,"hello"是常量,存储在常量区。temp指针变量指向的是一个字符串常量,此时不能通过指针变量修改常量的内容
  6. 在这里插入图片描述

char name[20]="admin";
char pwd[20];
pwd=name; //错误
char *pstr=name; //指针指向字符串变量,可以通过下标或者地址偏移方式改变值
char *temp="hello"; //temp指针指向 字符串常量

指针高级

数组指针

{	int num[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
	int i=0,j=0;
	int (*p)[4]=num; //指向二维数组的指针---行指针(数组指针),每行4个元素,不可省
	int *p[4]; //指针数组 指针类型的数组,数组里面保存的是int类型的指针,占用4*4-16个字节空间
	/*行指针-本质是指针,使用在二维数组作为函数参数的时候,行指针+1,偏移1行
	  指针数组-本质是数组,通常可以应用在二维字符数组上,保存多个字符串*/
	char *stu[20]={"lili","rose","lucy"}; //指针数组,保存三个字符串在常量区对应的地址
	puts(stu[1]); //访问到rose
	p++; //偏移行
	//访问二维数组的元素
	printf("%d\n",num[1][1]); //下标法
	for(i=0;i<3;i++)
	{
		for(j=0;j<4,j++)
		{
			printf("%d\t",num[i][j]); //下标法
			printf("%d\t",*(num[i]+j)); //每一行的首地址偏移,取内容
			printf("%d\t",*(*(num+i)+j)); //
			printf("%d\t",*(num+i)[j]); //*(num+i)[j]->*(p)[j]
			printf("%d\t",*(&num[0][0]+4*i+j)); //num &num[0][0]+4*i+j
		}
		printf("\n");
	}
	printArry(num,3); //函数调用
}
//int p[3][4]   int p[][4]   int (*p)[4]  二维数组形参方式
void printArry(int num[][4],int row)
{
	int i=0,j=0;
	for(i=0;i<row;i++)
	{
		for(j=0;j<4,j++)
		{
			//printf("%d\t",num[i][j]); //下标法
			//printf("%d\t",*(num[i]+j)); //每一行的首地址偏移,取内容
			//printf("%d\t",*(*(num+i)+j)); //
			printf("%d\t",*(num+i)[j]); //*(num+i)[j]->*(p)[j]
			//printf("%d\t",*(&num[0][0]+4*i+j)); //num &num[0][0]+4*i+j
		}
		printf("\n");
	}
}

结构体指针

保存的是结构体变量对应的地址

typedef struct staff
{
}STAFF_T;

STAFF_T user={1001,"admin","123456"};
STAFF_T *puser=NULL;

puser=&user;

//结构体指针变量访问数据成员的格式:指针变量名+->变量名
printf("%s\n",puser->name);

二、上课没有听懂或者没有理解的地方

三、当天学习的收获

学习了访问二维数组元素的几种方法

四、作业的思路、不会的地方

使用结构体指针作为形参

五、其他需要反馈的问题

六、心得体会

数组指针和指针数组比较难理解消化,多学多练。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值