C语言之指针高级应用一

指针与一维数组

  • 数组名代表数组的首地址,也就是第一个元素的地址。
  • 数组元素的地址有两种表示方法
数组元素前面加“&”符号
&ary[i]//数组下标
数组名+下标
ary + 2

将数组首地址赋值给指针变量
int p = ary;
利用指针访问数组元素
数组元素地址:p+i
取值:
(p+i)

字符指针与字符数组

定义和初始化基本类似,区别就是如果要给数组整体赋值只能通过strcpy()函数赋值,而字符指针可以直接赋值

指针与二维数组

重点区别数组指针与指针数组的区别:

  • 数组指针:int (*pstr)[10]=num 又叫行指针,指向一维数组
  • 指针数组:int pstr[10] 用来存放地址
    如何访问二维数组的某个元素
    a[i]+j、
    (a+i)+j、&a[0][0]+j+5*i
    对二维数组的引用
    int a[i][j] ,(*p)[5]
    两种种访问二维数组的方法:a[i][j]、p[i][j]、指针访问

重点结构体指针

结构体指针:struct student *stu;
通过–>运算符访问结构体中的元素

登录模块

利用指针传递参数实现用户登录模块
注意:每次匹配完之后结构体指针指向后一个结构体数据

void login(USER_T *user)
{
	int i = 0;
	char use[10];
	char pwd[10];

	printf("请输入账号:");
	scanf_(use,8,2,0);
	printf("\n请输入密码:");
	scanf_(pwd,6,1,1);
	
	for(i = 0;iusername) == 0 && strcmp(pwd,user->pwd) == 0)
		{
		   printf("\n%s,欢迎登陆系统!\n",user->username);
		   break;
		}
		else if(i>=count)
		{
		   login(user);
		}
		user++;
	}
}

遇到问题

对于二维数组与指针的关系没有听太懂,通过指针去访问二维数组还是有点没弄明白,还有就是指针数组以及数组指针(行指针)有点混乱,课后还得下点功夫,通过练习去理解这些东西。

心得体会

刚入门c语言了hhh,接下来要学习的才是C语言最精髓的部分了,当然也是比较难的部分了。就拿今天晚上的指针的高级应用来讲,上课还是听得有点稀里糊涂的,不过后面自己通过练习去理解相信应该还是可以克服的,只要功夫深,铁杵磨成针嘛。
所以接下来要更加努力,勤动手敲代码了。

你可能感兴趣的:(C语言之指针高级应用一)