ChapterI

  • 指针的基础使用:*和&符号,分别为引用和取地址符号
  • 一维数组指针:
    • 数组名就是首个数据的地址
    • 指针的位移和下标访问本质上是一样的
    • 几个比较容易混淆的有关运算符优先级的东西
      • i++ i– ++i –i *(++i) *(–i) *(i++) *(i–)
      • 不看这个我都还不知道原来++i和i++的理解方式不是按照从右到左的方式,我真的菜死
#include<bits/stdc++.h>
using namespace std;
#define loop(i,start,end) for(int i=start;i<=end;++i)
#define max(a,b) ((a>b)?a:b)
void swap(int *a, int *b){//指针的基础使用
	int t = *b;
	*b = *a;
	*a = t;
}
void fusion(int *a,int lena,int *b,int lenb,int *c,int lenc){
	if(lenc<lenb+lena)return;
	memset(c,0,sizeof(c));
	int p0 = 0;
	loop(i,0,lena){
		*(c+p0)=*(a+i);
		p0++;
	}
	loop(i,0,lenb){
		*(c+p0)=*(b+i);
		p0++;
	}
}
void Sort(int a[],int lena){ // 一维数组指针的使用
	loop(i,0,lena){
		loop(j,i,lena){
			if(*(a+i) < *(a+j))
				swap(a+i, a+j);
		}
	}
}
int main(){
	int a = 10, b = 11;
	swap(&a,&b);
	printf("%d %d\n",a,b);
	int f[5] = {1,5,1,1,1};
	int g[3] = {0,3,0};
	int k[10] = {0};
	fusion(f,3,g,3,k,9);
	loop(i,0,9)
		printf("%d ",k[i]);
	printf("\n");
	Sort(k,9);
	loop(i,0,9)
		printf("%d ",k[i]);
	return 0;
}
>>>OutPut:
11 10
1 5 1 1 0 3 0 0 0 0
5 3 1 1 1 0 0 0 0 0

Chapter II

  • 函数指针:指向函数的指针,returnType (*pointerName)(param list);