1.什么是指针? { 指针就是用来存放地址的变量 } 2.如何使用指针进行运算? { int a=10; int *p=&a printf("%d",*p); *p=100; printf("%d",a); } 3.什么时候使用指针? { 当函数进行值传递时通过指针传递就可以实现, 形参和实参的同步转化,从而更便捷的实现函 数功能 另外,在数组是不支持数组地址++运算所以 通过将首地址赋值给指针,达到指针数组的效 果.(数组地址不可以更改) } 4.指针有几种类型? { 常见的有: $各种数据类型对应的指针变量以及指针数组 如: char *q; int *p; short *a; long int *b; bool int *c; int rum[8]; int rum[]; int *tree; int *tree; 定义指针数组保持相同的数组量,否则 无法使用 多级指针: 用来存放指针地址的指针 int **p=&q; 二维数组:指针也可看做二级指针 但是不等于二级数组就是二级指针 所以一级指针变量和二级指针之间不可 以直接赋值 数组指针:用来存放数组地址的指针 int fore[10]; int (*poi)[10]=&fore; 在此处poi+1就等于fore的地址加40; 函数指针 } 5.使用指针有什么要求 { 指针的类型必须和所取地址的变量类型保持 严格一致 } 6.巧用指针案例 { #include<stdio.h>//总结:数组定义时是指针,运算时是指针解引用 #define LIM 4 int sumary(int a[],int b[],int c[]); int main() { int array1[LIM]={2,4,6,8}; int array2[LIM]={1,0,3,6}; int array3[LIM]; sumary(array1,array2,array3);//将首地址传入形参数组 int i; for(i=0;i<LIM;i++) { printf("%d ",array3[i]); } return 0; } int sumary(int a[],int b[],int c[])// { for(int i=0;i<LIM;i++) { c[i]=b[i]+a[i]; } //return 0; //a[]=*(a); //*(a+i)=a[i]; } } 7.指针有哪些相同的项,哪些不同但相似的项 { *相同项 数组首地址=数组首元素取地址 *不同项 数组取地址 != 数组首地址 数组首地址加一 != 数组地址加一 }