知识
宏(C)
1.格式:# define 宏名
2.替换过程如下
.c(源代码文件)->.i(预处理后的中间结果文件)->.s(汇编代码文件)->.o(目标代码文件)->.out(执行程序)
编译器替换时不管“”内的东西,是完全的文
本替换,define结尾不用加;,因为他不是
个语句。
3.无值的宏
#define _ 宏名
用于条件编译,有其他的编译预处理指令,可检查宏是否被定义过了。
4.inline函数可替代宏
变量地址(C)
1.& 变量名
类型:基本类型*,映射字节数
值:变量单位首字节地址值
地址用于用一个值映射空间
& 变量名 通过地址值找到第一个字节,通过类型可确定从第一个字节开始所映射的空间。
地址值是void*(无类型),地址有类型。
eg:
在计算机中,假设变量x=3,储存如下
00000000
00000000
00000000
00000011 <--首字节地址=&x
地址可以进行强制类型转换
2.地址的计算
地址+(-)整数:从该地址的首字节开始向高(低)地址加(减)整数*sizeof(变量名)个字节
搞清楚起始地址及地址类型
1)地址指向法
*(地址)
2)下标表示法
(&变量)[从变量首址开始上(下)寻几个
单元]
下标运算优先级最高
#include<stdio.h>
int main()
{
int a[4]={1,2,3,4};//定义一个int型数组顺便随便赋几个值
printf("%d",*(a+3));
printf("%d",a[3]);
printf("%d",*((int*)(&a+1)-1);
/*以上三个输出为同一个值,4*/
return 0;
}
链表(单向)
接上篇
2.链表的查找
在链表中查找某成员值为给定值的结点。
定义一个查找函数,返回值为指针类型,返回指向查找到结点的指针。顺序查找至链表尾还未找到给定值结点,返回空指针。
struct st *find(struct st *p)
{
long num;
scanf("%ld",&num);
while(p->next!=NULL)
{
p=p->next;
if(p->num==num)
{
return p;
}
}
return NULL;
}
刷题感悟(C)
西安邮电大学2020第二届软件设计大赛
总结
敲代码好快乐,我爱敲代码
恳请各位斧正错误,提出不足
谢谢各位看官!!