指针与一维数组
- 数组名代表数组的首地址,也就是第一个元素的地址。
- 数组元素的地址有两种表示方法
数组元素前面加“&”符号
&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;i<count;i++)
{
if(strcmp(use,user->username) == 0 && strcmp(pwd,user->pwd) == 0)
{
printf("\n%s,欢迎登陆系统!\n",user->username);
break;
}
else if(i>=count)
{
login(user);
}
user++;
}
}
遇到问题
对于二维数组与指针的关系没有听太懂,通过指针去访问二维数组还是有点没弄明白,还有就是指针数组以及数组指针(行指针)有点混乱,课后还得下点功夫,通过练习去理解这些东西。
心得体会
刚入门c语言了hhh,接下来要学习的才是C语言最精髓的部分了,当然也是比较难的部分了。就拿今天晚上的指针的高级应用来讲,上课还是听得有点稀里糊涂的,不过后面自己通过练习去理解相信应该还是可以克服的,只要功夫深,铁杵磨成针嘛。
所以接下来要更加努力,勤动手敲代码了。