关键字define
1.定义常量 #define MAX 1000 #define STR "abcdef"
2.定义宏 #define ADD(x,y) ((x)+(y))
指针
内存的一个单元 1字节 给每个单元编号 ---内存单元的地址
指针其实就是地址,地址就是内存单元的编号
把地址进行存储的时候,就可以放到一个变量中,这个变量就是指针变量
int main() {
int a = 10;
int * pa = &a; //pa是创建出来存放地址的,pa就是指针变量 把地址也叫指针 编号 = 地址 = 指针
// int * 整体是一个类型 整型指针类型
// * 说明 pa 是指针变量
// int 说明 pa指向的对象是 int类型
return 0;
}
通过地址访问变量:
// & -- 取地址操作符 取出变量的地址
// * -- 解引用操作符(间接访问操作符),通过地址找到地址指向的内容
指针变量的大小
指针变量是用来存放地址的,所以指针变量的大小取决于存储一个地址需要多大的空间
例如32bit系统:有32根地址线,0000 0000 0000 0000 0000 0000 0000 0000 32个0/1组成地址序列,需要32bit的空间来存储,所以 32Bit指针变量的大小需要4个字节 64bit系统指针变量的大小8个字节
结构体
void Print(struct Stu * ps)
{
//1.
//printf("%s %d %f\n", (*ps).name, (*ps).age, (*ps).score);
//2. 结构体指针 -> 结构体成员
printf("%s %d %f\n", ps->name, ps->age, ps->score);
}
int main() {
struct Stu s = { "zhangsan",20, 95.5f };
struct Stu s2;
// printf("%s %d %f",s.name ,s.age,s.score);
Print(&s);
//输入数据到s2中
scanf("%s %d %f", s2.name, &(s2.age), &(s2.score));
Print(&s2);
return 0;
}
错题总结:
1,
strlen是用来获取字符串的有效长度的,结尾标记'\0'不包含在内。
strlen获取的规则非常简单:从前往后依次检测,直到遇到'\0'是就终止检测。而上体中arr是一个字符数组,不是一个有效的字符串,因为后面没有放置'\0',因此strlen在求解时,将有效字符检测完之后,还会继续向后检测,直到遇到'\0'是才终止,因此答案为不确定,就看紧跟在't'之后的第一个'\0'在什么位置。
2.数组的大小必须是常量
3.常见的转义字符
strlen:获取字符串的有效长度,不包括'\0'