/*复习 1.指针类型 int * 指针类型 指针指向的变量类型 指针指向哪个变量 2.基本数据类型 4种 指针类型 存放的地址 和系统有关系 4个字节 数组类型 结构体 枚举 联合3.指针加法减法 p++ 和数组搭配使用4.两个运算符 *取值(解引用) &取地址5. *(p+i) p[i] (p是指针 i是整型) p[i]的地址 &p[i] p+i*/#include#include int win;//全局变量 int main(){ //1.复习 //int* p;//int *p;int * p;没有任何区别 int* p, *q;//定义两个指针 指针前面要记得单独加* char chArr[] = "helloworld";//字符数组 存放字符串 栈区 char *pArr = "helloworld";//指针 字符串存放在常量区 ,指针指向它存放的首地址 字符串不能(不可以被修改) //代码区 全局数据区(常量区) 堆区 栈区 /* 数组输出 除了字符数组 字符数组 \0作为结尾 printf("%s",chArr);//用printf输出 %s 输出这个地址和地址后的所有字符 直到遇到\0为止 scanf("%s",chArr);//数组名就是数组首地址 数组第一个元素的地址 */ //相同点 puts(chArr);//都可以用来打印printf strcmp strlen puts(pArr); //不同点 pArr不能用于输入 //gets(chArr); //gets(pArr);//不可以修改内容 //strcpy strcat strlen 字符串的函数 //strcpy(pArr, chArr);//不可以修改常量区 //2.指针的加加 ++ 指针加1 // 指针++的时候同时解引用 int iArr[10] = { 0 }; int iBrr[10] = { 0 }; p = iArr, q = iBrr; //*p++; (*p)++; printf("*p=%d,p=%p\n", *p, p); //*p++; *p++=5; //先给*p赋值 然后p++ 等价*p=5,p++ printf("*p=%d,p=%p\n", *p, p); printf("*q=%d,q=%p\n", *q, q); (*q)++; printf("*q=%d,q=%p\n", *q,q); /* *p++ p加了1 (*p)++ p指向的内容 加了1 *(p++) 和*p++没有区别//课后自己试试 * 后++ 取值 p++ 都是操作指针 *p++ (*p)++ 对*p进++ 指向的变量进行++ 今天的作业题目 测试作用 *++p ++*p 附加题(可以不做) 测试二级指针和数组指针加1之后的地址偏移 */ //3.指针和数组 (理论) /* 指针加1 偏移一个数据的长度 数组同样可以看成一个类型 int arr[10] arr -->大小 存数据 地址 */ int idArr[5][10];//二维数组 //p = idArr;//类型不一致 //方案1 //p = &idArr[0][0]; //赋值数组第一个元素地址 //for (int i = 0; i < 5 * 10; i++)//用指针给数组赋值 //{ // *p = i; // p++; // //*p++ = i; //} //方案2 //数组指针 指针指向整个数组 //int (*pd)[10]=idArr; int(*pd)[10];//定义一个数组指针 //pd= idArr; pd = &idArr[0];//赋值 for (int i = 0; i < 5; i++)//用数组指针给他赋值 { for (int j = 0; j < 10; j++) { pd[i][j] = i*j;//使用 } } /* pd[i][j] (*(p+i))[j] *(p[i]+j) *(*(p+i)+j)等价 *pd[3] ==>*((pd[3])+0) */ //数组指针和指针数组 int(*point)[10];//数组指针 指向数组的指针 int *parr[10];//指针数组 int* parr[10] 指针数组 10个int* 10个元素都是指针 //二级指针 指针保存的是一个一级指针的地址 用到二级指针 int **pp; pp= &p;//p是一级指针 pp保存一级指针地址 pp = parr;//指针数组名 pp = &parr[0];//parr[0]是一个一级指针 for (int i = 0; i < 5; i++)//循环打印 { for (int j = 0; j < 10; j++) { printf("%d\t", idArr[i][j]); } printf("\n"); } getchar(); return 0;}