学习目标:
指针以及结构体
学习内容:
1.额外内容:#define定义常量和宏
定义常量
**使用#define定义数字常量和字符串常量,**用#define定义是不用=的
定义宏
宏与函数区别:宏不需要写变量类型,宏的名字字母一般都大写。
但是调用宏和调用函数很相似~
2.指针
依次解析int* pa = &a ;
int*:表示定义整型指针变量(有需要也可以写char*等)
pa :表示指针变量名称
&a :表示指针变量里面存放的地址
提问,为什么int a=10要用4个字节?
答:因为此时visual studio用的是32位,每个地址编号都是32位的二进制数字串,也就是说每个地址编号占32bit,也就是4byte。
ps:要是用的64位,那么定义变量就占64/8=8byte了。
“&”:取地址操作符,把某个变量的地址取出来
“*”:解引用操作符,通过指针变量里面存放的地址,找到该地址里面存放的数据。
**3.结构体
结构体存在的意义:
如何定义结构体**(注意结尾}处的分号;)**:
struct Stu
{
char name[20];//
int age;//
float score;//这三个都是结构体成员
};//***!特别注意!,此处结尾有分号“;”***
介绍两种操作符 :
“.”操作符:结构体变量 . 结构体成员
“->”操作符:结构体指针 -> 结构体成员
构建结构体函数用来打印指针:
该函数不需要返回值,所以用void定义。
注意括号里面的形式参数用的是定义指针变量。
输入数据到结构体
scanf("%s %d %f",s2.name,&(s2.age),&(s2.score));//
数组本来就是地址,所以scanf(“”,数组)时不要加“&”
有关scanf函数:
如果读取正常的话,返回的是读取到的数据的个数;
scanf("%d",z)//返回值就是1
scanf("%d %d",a,b);//返回值就是2
如果读取失败,会返回EOF.
例题:输入多组数值,若输入的数字大于等于140,则输出“Genius”。