结构体初阶
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> //int main() //{ // //指针+指针?NO! // // 日期+/-天数 // // 日期-日期 // // 日期+日期?没什么用 // // // return 0; //} //int main() //{ //#define N_VALUES 5 // //指针的关系运算 // //for (vp = &values[N_VALUES]; vp > &values[0];) // //{ // // *--vp = 0; // //} // // //for (vp = &values[N_VALUES-1]; vp >= &values[0];vp--) // //{ // // *vp = 0; // //}//最后vp停在了-1的内存位置//实际在绝大多数的编译器上是可以顺利完成任务的,然而我们还是要避免这样写,因为标准并不保证他可行 // //标准规定:允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较,但不允许与指向第一个元素之前的那个内存位置的指针进行比较 // return 0; //} //int main() //{ // int arr[10] = { 0 }; // arr;//数组名是数组首元素的地址 // printf("%p\n", arr);//008CFA70 // printf("%p\n", &arr[0]);//008CFA70 // return 0; //} //int main() //{ // int arr[10] = { 0 }; // int* p = arr; // int i = 0; // for (i = 0; i < 10; i++) // { // printf("%p <==> %p\n", &arr[i], p + i);//p为首元素地址,p+i产生的就是下标为i的元素的地址 // // 0034FDE8 <= = > 0034FDE8 // // 0034FDEC <= = > 0034FDEC // // 0034FDF0 <= = > 0034FDF0 // // 0034FDF4 <= = > 0034FDF4 // // 0034FDF8 <= = > 0034FDF8 // // 0034FDFC <= = > 0034FDFC // // 0034FE00 <= = > 0034FE00 // // 0034FE04 <= = > 0034FE04 // // 0034FE08 <= = > 0034FE08 // // 0034FE0C <= = > 0034FE0C // // } // // for (i = 0; i < 10; i++) // { // *(p + i) = i; // printf("%p\n", *(p + i)); // // 00000000 // // 00000001 // // 00000002 // // 00000003 // // 00000004 // // 00000005 // // 00000006 // // 00000007 // // 00000008 // // 00000009 // } // return 0; //} //int main() //{ // int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; // int* p = arr; // //arr[2] <==> *(arr+2)<==> *(p+2) <==> *(2+p) <==> *(2+arr) ==2[arr] // //2[arr] <==> *(2+arr) // //[]-是一个操作符 2和arr是两个操作数 // //a+b // //b+a // printf("%d\n", 2[arr]); // printf("%d\n", arr[2]); // //arr[2]--> *(arr+2)--> *(2+arr)-->2[arr] 计算机编译时是将arr[2]转化为*(arr+2)运行的 // // printf("%d\n", p[2]);//p[2]-->*(p+2)-->*(arr+2)-->arr[2] // printf("%d\n", 2[p]); // return 0; //} //int main() //{ // int a = 10; // int* pa = &a;//pa是指针变量,一级指针 // //ppa是二级指针变量 // int* *ppa = &pa;//pa也是变量,&pa取出pa在内存中起始地址 // //pppa是三级指针变量 // int** *pppa = &ppa; // //套娃... // printf("%p\n", pa);//006FF808 // printf("%p\n", ppa);//006FF7FC // printf("%p\n", pppa);//006FF7F0 // //*pppa=ppa // //*ppa=pa // //*pa=a // //***pppa=a // // return 0; //} 指针数组-数组 // //int main() //{ // int arr[10];//整型数组-存放整型的数组就是整型数组 // char ch[5];//字符数组-存放的是字符 // //指针数组-存放指针的数组 // int* parr[5];//整型指针数组 // char* carr[5];//字符指针数组 // // return 0; //}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)