常量:在程序运行过程中值不能发生改变
变量:在程序运行过程中值可以发生改变
计算机内存中最小的存储单位是字节,每个字节都有一个编号这个编号就是地址
指针变量:存储地址的变量
一般形式:
<数据类型> *<指针变量名>
NULL: 空指针
int a = 10, b = 20;
int *p = &a;
printf("a:%d *p:%d\n", a, *p);
a = 30;
printf("a:%d *p:%d\n", a, *p);
*p = 40;
printf("a:%d *p:%d\n", a, *p);
指针的指针(指向一级指针的指针变量)
int a = 10, b = 20;
int *p;
p = &a;
int **q = &p;
printf("a: %d %d %d\n", a, *p, **q);
//p = &b;
*q = &b; // p = &b
q == &p *q == p **q == *p == b
在C语言中一维数组的数组名就是该数组在内存中的起始地址也是首元素的地址
char a[10] = {"hello"};
char *p = a;
printf("a[3]: %d %d %d %d\n", a[3], *(p+3), p[3], *(a+3));
*和&互为逆运算: 同时存在可以相互抵消
*和[]等价 : 可以相互转换
&和[]互为逆运算:同时存在可以相互抵消
int a[4] = {1,2,3,4}, m;
scanf("%d", &m);
加入m==3
a: 2,3,4,1
冒泡排序:
int a[N] = {.....}, t;
for(int i = 0; i < N-1; i++){
for(int j = 0; j < N-i-1; j++){
if(a[j] > a[j+1]){
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}