范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

C语言栈区堆区和数据区的使用

  1.一维数组名称的含义#define _CRT_SECURE_NO_WARNINGS #include #include #include #include  static void printArray(int arr[], int len)//int arr[]等价于  int * arr {     for (int i=0; i < len; i++)     {         //printf("%d ", arr[i]);//给人看的          printf("%d ", *(arr + i));//给机器看     } }  static void test01() {     int arr[5] = { 1,2,3,4,5 };      //一维数组名称不是指针      printf("sizeof arr=%d ", sizeof(arr));//20     printf("strlen arr=%d ", strlen(arr));//1      //除了两种特殊情况下,一维数组名称都是指针首元素地址      //特殊情况1:对数组名称进行sizeof      //特殊情况2:对数组名称取地址      //int* p = &arr;      printf("%d ", &arr);     printf("%d ", &arr+1);//步长差20       //数组名称 指针常量 指针的指向不可以修改 int*const p    /* *arr = NULL;     arr[0] = 100;*/      int len = sizeof(arr) / sizeof(int);     printArray(arr, len);       int* p = arr;//指向首元素地址     p += 3;     //[]里可以放负数     printf("%d ", p[0]);//4     printf("%d ", p[-1]);//3     printf("%d ", *(p-1));//3    } int main01() {     test01();     return 0; }
  2.数组指针的定义#define _CRT_SECURE_NO_WARNINGS #include #include #include #include  //1、先定义出数组的类型,在通过类型创建数组指针 static void test01() {     int arr[5] = { 1,2,3,4,5 };      typedef int(ARRAY_TYPE)[5];//ARRY_TYPE是一个数据类型,代表有5个int型元素的数组          ARRAY_TYPE* arrp = &arr;      //printf("%d ", arrp);     //printf("%d ", arrp+1);      for (int i = 0; i < 5; i++)     {         printf("%d ", (*arrp)[i]);//*arrp等价于arr     } } //2、先定义数组指针的类型,在创建数组指针变量 static void test02() {     int arr[5] = { 1,2,3,4,5 };      typedef int(*ARRAY_TYPE)[5];      ARRAY_TYPE arrp = &arr; } //3、直接创建数组指针变量   建议使用这种 static void test03() {     int arr[5] = { 1,2,3,4,5 };      int(*parr)[5] = &arr;      for (int i = 0; i < 5; i++)     {         printf("%d ", (*parr)[i]);     } } int main02() {     //test01();     //test02();     test03();     return 0; }
  4.指针数组排序#define _CRT_SECURE_NO_WARNINGS #include #include #include #include  //从小到大,选择顺序 void selectSort01(int arr[],int len) {     for (int i = 0; i < len; i++)     {         int min = i;//认定i为最小值         for (int j = i + 1; j < len; j++)         {             if (arr[j] < arr[min])             { 				//更新最小值下标 				min = j;             }         }         if (min != i)         {             int temp = arr[i];             arr[i] = arr[min];             arr[min] = temp;         }     } } static void printArray(int arr[], int len) {     for (int i = 0; i < len; i++)     {         printf("%d ", arr[i]);     } } static void test01() {     int arr[] = { 4,5,3,2,1 };     int len = sizeof(arr) / sizeof(int);     selectSort01(arr, len);     printArray(arr, len); }  //通过选择排序算法计算后,实现对指针数据的降序排列 void selectSort(char**parr,int len) {     for (int i = 0; i < len; i++)     {         int max = i;//认定最大值下标为i         for (int j = i + 1; j < len; j++)         {             if (strcmp(parr[max], parr[j]) < 0)             {                 //更新最大值下标                 max = j;             }         }         if (i != max)         {             //交换i和max的下标元素             char* temp = parr[max];             parr[max] = parr[i];             parr[i] = temp;         }     } } static void printCharArray(char** parr, int len) {     for (int i = 0; i < len; i++)     {         printf("%s ", parr[i]);     } } static void test02() {     char* parr[] = { "aaa","bbb","ccc","ddd","eee","fff" };     int len = sizeof(parr) / sizeof(char*);     selectSort(parr,len);     printCharArray(parr, len); } int main04() {     //test01();     test02();     return 0; }
  5.结构体概念#define _CRT_SECURE_NO_WARNINGS #include #include #include #include   typedef struct person {     char name[64];     int age;//不要在定义结构体时赋值 }myperson;//myperson是struct person类型的别名  static void test01() {     myperson p = { "aaa",22 };  }  struct person2 {     char name[64];     int age; }myperson2 = {"bbb",12};//myperson是一个结构体变量  static void test02() {     printf("姓名:%s  年龄:%d ", myperson2.name, myperson2.age);     myperson2.age = 100;     strcpy(myperson2.name, "b");      printf("姓名:%s  年龄:%d ", myperson2.name, myperson2.age);  }  struct {     char name[64];     int age; }myperson3 = {"ccc",13};  //匿名类型,后期无法使用 static void test03() {     printf("姓名:%s  年龄:%d ", myperson3.name, myperson3.age);  }  static void test04() {     //在栈上创建结构体     struct person p1 = { "aa",11 };      //在堆区创建结构体     struct person* p2 = malloc(sizeof(struct person));     p2->age = 100;     strcpy(p2->name, "bb"); }  static void printArray(struct person pons[], int len) {     for (int i = 0; i < len; i++)     {         printf("姓名:%s  年龄:%d ", pons[i].name, pons[i].age);     } } static void test05() {     //结构体变量数组     //在栈上创建     struct person pons[] =     {         {"aaa", 11},         {"bbb", 12},         {"ccc", 13},         {"ddd", 14}     };     int len = sizeof(pons) / sizeof(struct person);//4     printArray(pons, len);     //在堆区创建     struct person* ponss = malloc(sizeof(struct person) * 4);     for (int i = 0; i < 4; i++)     {         sprintf(ponss[i].name, "name_i=%d", i);         ponss[i].age = i + 18;     }     printArray(ponss, 4);      if (ponss != NULL)     {         free(ponss);         ponss = NULL;     } } int main05() {     //test02();     //test03();     test05();     return 0; }
  6.结构体赋值#define _CRT_SECURE_NO_WARNINGS #include #include #include #include  struct person {     char name[64];     int age; }; static void test01() {     struct person p1 = { "tom",11 };     struct person p2 = { "Jerry",12 };     p1 = p2;     printf("p1姓名:%s  p1年龄:%d ", p1.name, p1.age);     printf("p2姓名:%s  p2年龄:%d ", p2.name, p2.age); } struct person2 {     char* name;     int age; };  static void test02() {     struct person2 p1;     p1.age = 11;     p1.name = malloc(sizeof(char) * 64);     strcpy(p1.name,"tom");      struct person2 p2;     p2.age = 13;     p2.name = malloc(sizeof(char) * 128);     strcpy(p2.name, "jerry");      //p1 = p2; //默认是浅拷贝      //自己提供赋值操作  深拷贝     //先释放原有内容     if (p1.name != NULL);     {         free(p1.name);         p1.name = NULL;     }     p1.name = malloc(strlen(p2.name) + 1);     strcpy(p1.name, p2.name);     p1.age = p2.age;      printf("p1姓名: % s  p1年龄: % d ", p1.name, p1.age);     printf("p2姓名: % s  p2年龄: % d ", p2.name, p2.age);      if (p1.name != NULL)     {         free(p1.name);         p1.name = NULL;     }       if (p2.name != NULL)     {         free(p2.name);         p2.name = NULL;     } } int main06() {     //test01();     test02();     return 0; }
  7.结构体嵌套一维数组#define _CRT_SECURE_NO_WARNINGS #include #include #include #include  struct person {     char* name;     int age; }; struct person** allocateSpace() { 	struct person** pArray = malloc(sizeof(struct person*) * 3);      for (int i = 0; i < 3; i++)     {         //给每个结构体开辟内存 		pArray[i] = malloc(sizeof(struct person));          //给每个结构体姓名开辟内存         pArray[i]->name = malloc(sizeof(char) * 64);          sprintf(pArray[i]->name, "name_%d", i + 1);          pArray[i]->age = i + 20;     }     return pArray; } static void printArray(struct person ** pArray, int len) {     for (int i = 0; i < len; i++)     {         printf("姓名:%s  年龄:%d ", pArray[i]->name, pArray[i]->age);     } } static void freeSpace(struct person** pArray, int len) {     for (int i = 0; i < len; i++)     {         //释放姓名         if (pArray[i]->name != NULL)         {             printf("%s被释放 ", pArray[i]->name);             free(pArray[i]->name);             pArray[i]->name = NULL;         }         //释放结构体         free(pArray[i]);         pArray[i] = NULL;     }     //释放数组     free(pArray);     pArray = NULL;  static void test01() {     struct person** parray = NULL;//malloc(sizeof(struct person*) * 3); 	  parray = allocateSpace();     printArray(parray, 3);     //释放内存     freeSpace(parray,3);     parray = NULL; } int main() {     test01();     return 0; }

四种常用的微服务架构拆分方式微服务架构并无标准架构,不然什么架构师大会也不会各个系统架构百花齐放了。虽然没有固定的套路,却有一些经验,今天就来做一个总结。基于角色拆分这种拆分方式常见于基础设施以及其PaaS层你相信吗?小米居然加入了鸿蒙生态文丨58数码你们知道一个正确的决定会对一个人产生什么影响吗?举个例子,雷军创办的小米在创立初期因为出现的时机以及极其实惠的价格受到不少网友的一致好评。而尝到甜头的雷军更是坚定了用实盘点在韩的中国品牌山寨品也能攻陷韩国市场随着中国智造日益强盛,近些年来通过亚马逊速卖通ebay等跨境电商平台,已有不少中国品牌成功出海,且在全球范围赢得了较高的认知度和信誉度。就连最难啃的韩国市场,不少中国产品也纷纷突破Apple新固件更新,兼容更多设备Apple已向所有果粉们推送了iOS15。5Beta2测试版,虽然只是小版本的修复,并没有带来重要的新功能。但果粉们暗示在更新中发现Apple的一些新的代码显示,ApplePay将SpringRetry在SpringBoot中的应用SpringRetry提供了自动重新调用失败的操作的功能。这在错误可能是暂时的(例如瞬时网络故障)的情况下很有用。从2。2。0版本开始,重试功能已从SpringBatch中撤出,成苹果可能会在2024年推出其第一款真全面屏手机分析师郭明錤近日在推特上表示,苹果可能会在2024年推出其第一款真全面屏手机,iPhone16Pro可能是第一款配备屏下面容ID和屏下前置摄像头的苹果设备。事实上,郭最新的推文链接目前最便宜的4款12G256G手机,优点各不相同,都在1999元以内不知道大家发现没有,其实很多人一直都分不太清运存和闪存这两个问题,其实这个问题很简单,内存就是处理文件的地方,内存越大,处理各类程序的速度越快闪存则是用来存储文件的地方,闪存越大,三大运营商2022一季报出炉三家合计净利润375亿,5G用户数8。49亿4月22日,资本邦了解到,电信三巨头公布2022年第一季度报告。中国电信(00728。HK601728。SH)公告称,2022年首季,公司营业收入为人民币(下同)1185。8亿元,SpringBoot接入Swagger及SwaggeruiDemo地址httpsgitee。compenglddemoswaggerdemoMaven依赖!SwaggerdependencygroupIdio。springfoxgroup孙海洋夫妇成立文化传媒公司,经营范围含互联网直播企查查APP显示,4月20日,深圳市四丫头孙卓嘛嘛四英文化传媒有限公司成立,注册资本100万元人民币,法定代表人及执行董事为彭四英(孙海洋妻子),经营范围包含文艺创作个人互联网直播C11移除了一个新特性在先前的C11预览版本中,C11引入了一个新特性,允许在参数名称的末尾加上!!来简化空值检查(nullchecking)。比如下面这个方法使用传统的方式进行参数空值检查public
关于交友的数量与质量晓风残月,子夜沉思朋友靠质量,不靠数量。人生走着走着自己都不知是什么时候,发现好多社交是无用的的?记得,在读大学的时候,常常约几个同学,一起吃吃喝喝,喜欢醉后的无话不说。那时候起码佟丽娅陈思诚婚变对婚姻的反思佟丽娅陈思诚离婚了,网上在沸腾了,对此我有如下不怎么深刻的对婚姻的反思。欢迎有智者交流。其实离婚肯定是当事人的事,旁观者没必要说三道四,也无权给他人定义裁判对与错。婚姻是否适合永远惬意于南山图书馆里的缱绻时光人生最好的旅行,就是空间之余进入一个无人打扰的地方,发现一种久违的感动,一个幽静的图书馆,或者你搬到一个新的小区,邻里之间谁也不认识,出门进门不用打招呼,谁也不知道你是谁,这种感觉18决赛最后一战,这道世界杯下酒菜了解一下世界杯淘汰赛进行到一半,夺冠热门纷纷回家,巴墨之战赛前还在猜测,内马尔会不会步梅老板和总裁的后尘。五星王者巴西迎战北美之王墨西哥,结果令人振奋,内马尔稳得一比!一进球一助攻,直接促吸睛能力MAX,XESS亮相CES2019,多款生态链产品惊艳世界作为CES展的常驻实力派,TCL在今年展会上不仅推出了X10QLED8KTV等在内的多款电视新品,也将XESS生态链产品带上了国际舞台。作为TCL的高端子品牌,XESS旗下首款产品穷人装富人,富人装穷人,一个伪装的世界多精彩穷人装富人,富人装穷人,这世界伪装何时了。层次决定人意识与思维。穷人穷久了,所处圈层多属同类。他们日夜做梦都是一夜暴富,但谈何容易,正如一句网络流行语晚上想起千条路,早上起来走原路苏宁818电脑数码榜单国产品牌狂吸眼球,华为音箱突然大卖距离8月18日苏宁发烧购物节的时间越来越短,苏宁各大版块的人气也越来越旺盛,各大品牌各款产品的重磅优惠接连放出,广大消费者更是剁手到停不下来。而值得注意的是,电脑数码版块一直以来都苏宁全民焕新节悟空榜GSHOCK王者荣耀联名款手表热卖春天可以没有新潮的发色,也可以没有精致的美甲,但一定要有漂亮的服装首饰。苏宁全民焕新节,其优惠力度堪称上半年的双11,此外还有新品扎堆上市,315品质服务保障,让消费者的购物体验得苏宁618空调销量榜柜机销量奥克斯首次夺冠空调是夏天最为重要的降温神器,眼看气温越来越高了,这一家电也迎来热销。苏宁作为中国最大的家电渠道,在618刚开始的时候就迎来了一次空调购买大热潮,不仅有打破历史价的空调爆款,还有各摄影游戏样样精通,双十一还没到我为什么着急下手这台双屏神器?毫无疑问,对于剁手党来讲双十一一定是最值得期待的,进入十一月,不仅是京东淘宝还是苏宁,不管是快消家电还是手机电脑只有一个主题,那就是买买买!可以说这是目前败家味道最浓的一个节了,错苏宁焕新节手机悟空榜华为后来居上勇夺安卓阵营双料冠军自第一届苏宁315全民焕新节启幕以来,以数码3C为代表的品类集体爆发,销量呈井喷趋势。尤其苏宁易购特为焕新节启动了悟空榜,每日公布全品类的详细销售实况后,各品牌商家更是打了鸡血般疯