有没有好心师傅教教孩子逆向和pwn啊°꒰๑'ꀾ'๑꒱°
数组
<类型> 变量名称[元素数量];
int grades[100];
double weight[20];
元素数量必须是整数
C99之前:元素数量必须是编译时刻确定的字面量
是一种容器,特点是:
其中所以的元素具有相同的数据类型;
一旦创建,不能改变大小
数组中的元素在内存中是连续依次排列的:
一个int的数组
10个单元:a[0],a[1],...a[9]
每个单元就是一个int类型的变量
可以出现在赋值的左边或右边:
a[2]=a[1]+6;
在赋值左边的叫做左值
数组的集成初始化
int a[]={2,4,6,7,1,3,5,9,11,13,23,14,32};
数组的大小
sizeof给出整个数组所占的内容的大小,单位是字节
二维数组
a[1][2]
二维数组的初始化
取地址运算
sizeof是一个运算符,给出某个类型或变量在内存中所炸的字节数
sizeof(int)
sizeof(i)
运算符&
scanf("%d",&i);里的&
获取变量的地址,它的操作数必须是变量
int i;printf("%x",&i);
他俩差一个int(4个字节)
i在更高的地方,p在低的地方,栈分配变量是自顶向下分配的
scanf
如果能够将取得的变量的地址传递给一个函数,能否通过这个地址在那个函数内访问这个变量?
scanf("%d",&i);
scanf()的原型应该是怎么样的?我们需要一个参数能保存别的变量的地址,
指针
就是保存地址的变量
int i;
int* p=&i;
int* p,q;
int *p,q;
指针使用
交换两个变量的值
void swap(int *pa,int *pb)
{
int t =*pa;
*pa=*pb;
*pb=t;
}
指针与const
字符数组
char word[]={'H','e','l','l','o','!'};
字符串
char word[]={'H','e','l','l','o','!','\0'};