堆中分配二维数组初始化排序

方法一:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int getmem(char *** parry,int *depth,int *len){

int mydepth = *depth;
int mylen = *len;
char ** myarry = (char **)malloc(mydepth*sizeof(char*));
for(int i=0;i<mydepth;i++) {myarry[i] = (char *)malloc(mylen*sizeof(char));
}
*parry = myarry;
return 0;

}

int sortArry(char ** arry,int *depth,int *len){
int mydepth = *depth;
int mylen = *len;
char temp[mylen];

for(int i = 0;i<mydepth;i++) {for(int j=i+1;j<mydepth;j++)if(strcmp(arry[i],arry[j])>0) {strcpy(temp,arry[i]);strcpy(arry[i],arry[j]);strcpy(arry[j],temp);}
}
return 0;

}

int sortArry1(char ** arry,int *depth,int *len){
int mydepth = *depth;
int mylen = *len;
char *temp;

for(int i = 0;i<mydepth;i++) {for(int j=i+1;j<mydepth;j++)if(strcmp(arry[i],arry[j])<0) {char * temp = arry[i];arry[i] = arry[j];arry[j] = temp;}
}
return 0;

}

int initArry(char ** arry,int *depth,int *len){
int mydepth = *depth;
int mylen = *len;

for(int i=0;i<mydepth;i++) {strcpy(arry[i],"aaaaaaaa");
}
strcpy(arry[1],"cccccccc");
strcpy(arry[3],"bbbbbbbb");return 0;

}

int printArry(char ** arry,int *depth,int *len){
int mydepth = *depth;
int mylen = *len;
for(int i=0;i<mydepth;i++) {
printf(“%s\n”,arry[i]);
}
printf(“------------------------------\n”);
return 0;
}

int freeArry(char ** arry,int *depth,int *len){
int mydepth = *depth;
int mylen = *len;

if(arry != NULL) {    for(int i=0;i<mydepth;i++) {if(arry[i] !=NULL ) {free(arry[i]);}}free(arry);
}return 0;

}

int freeArry1(char *** marry,int *depth,int *len){
int mydepth = *depth;
int mylen = *len;
char ** arry = *marry;
if(arry != NULL) {
for(int i=0;i<mydepth;i++) {
if(arry[i] !=NULL ) {
free(arry[i]);
}
}
free(arry);
}
marry = NULL;
return 0;
}

int freeArry2(char *** arry,int *depth,int *len){
int mydepth = *depth;
int mylen = *len;

if(arry != NULL) {    for(int i=0;i<mydepth;i++) {if((*arry)[i] !=NULL ) {free((*arry)[i]);}}free(*arry);
}
arry = NULL;
return 0;

}

int main(){

int depth = 5;
int len = 100;
char ** arry = NULL;
getmem(&arry,&depth,&len);
initArry(arry,&depth,&len);
printArry(arry,&depth,&len);sortArry(arry,&depth,&len);
printArry(arry,&depth,&len);sortArry1(arry,&depth,&len);
printArry(arry,&depth,&len);//freeArry(arry,&depth,&len);
//freeArry1(&arry,&depth,&len);
freeArry2(&arry,&depth,&len);
return 0;

}
在这里插入图片描述
方法二:
多分配一个数组,把最后一个数组置为0,作为循环判断条件。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int getmem(char *** parry,int *depth,int *len){

int mydepth = *depth+1;
int mylen = *len;
char ** myarry = (char **)malloc(mydepth*sizeof(char*));
for(int i=0;i<mydepth;i++) {myarry[i] = (char *)malloc(mylen*sizeof(char));
}
*parry = myarry;
return 0;

}

int sortArry(char ** arry,int *depth,int *len){
int mydepth = *depth;
int mylen = *len;
char temp[mylen];

for(int i = 0;arry[i]!=0;i++) {for(int j=i+1;arry[j]!=0;j++)if(strcmp(arry[i],arry[j])>0) {strcpy(temp,arry[i]);strcpy(arry[i],arry[j]);strcpy(arry[j],temp);}
}
return 0;

}

int sortArry1(char ** arry,int *depth,int *len){
int mydepth = *depth;
int mylen = *len;
char *temp;

for(int i = 0;arry[i]!=0;i++) {for(int j=i+1;arry[j]!=0;j++)if(strcmp(arry[i],arry[j])<0) {char * temp = arry[i];arry[i] = arry[j];arry[j] = temp;}
}
return 0;

}

int initArry(char ** arry,int *depth,int *len){
int mydepth = *depth;
int mylen = *len;
int i=0;
for(i=0;i<mydepth;i++) {
strcpy(arry[i],“aaaaaaaa”);
}
strcpy(arry[1],“cccccccc”);
strcpy(arry[3],“bbbbbbbb”);
arry[i]=0;

return 0;

}

int printArry(char ** arry,int *depth,int *len){
int mydepth = *depth;
int mylen = *len;
for(int i=0;arry[i]!=0;i++) {
printf(“%s\n”,arry[i]);
}
printf(“------------------------------\n”);
return 0;
}

int freeArry(char ** arry,int *depth,int *len){
int mydepth = *depth+1;
int mylen = *len;

if(arry != NULL) {    for(int i=0;arry[i]!=0;i++) {if(arry[i] !=NULL ) {free(arry[i]);arry[i]=NULL;}}free(arry);arry=NULL;//把形参置空
}return 0;

}

int freeArry1(char *** marry,int *depth,int *len){
int mydepth = *depth+1;
int mylen = *len;
char ** arry = *marry;
if(arry != NULL) {
for(int i=0;arry[i]!=0;i++) {
if(arry[i] !=NULL ) {
free(arry[i]);
arry[i]=NULL;
}
}
free(arry);//把形参置空
arry=NULL;
}
marry = NULL;//把实参也置空
return 0;
}

int freeArry2(char *** arry,int *depth,int *len){
int mydepth = *depth+1;
int mylen = *len;

if((*arry) != NULL) {    for(int i=0;i<mydepth;i++) {if((*arry)[i] !=NULL ) {free((*arry)[i]);(*arry)[i]=NULL;}}free(*arry);*arry=NULL;//把形参置空
}
arry = NULL;//把实参也置空
return 0;

}

int main(){

int depth = 8;
int len = 100;
char ** arry = NULL;
getmem(&arry,&depth,&len);
initArry(arry,&depth,&len);
printArry(arry,&depth,&len);sortArry(arry,&depth,&len);
printArry(arry,&depth,&len);sortArry1(arry,&depth,&len);
printArry(arry,&depth,&len);freeArry(arry,&depth,&len);
arry = NULL;//把实参也置空
freeArry1(&arry,&depth,&len);
freeArry2(&arry,&depth,&len);
return 0;

}
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1549593.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

arm内核调试仿真

qemu仿真ARM linux内核&#xff0c;支持网络协议&#xff0c;DHCP&#xff0c; telnet&#xff0c; ftp... 而且可以支持u-boot引导内核启动&#xff0c;下图为效果图&#xff1a;

ARM内核架构和SOC架构

注&#xff1a;本文资料全部来源于网络或书籍&#xff0c;同时加上个人理解。若有侵权&#xff0c;告知即删。若有错误&#xff0c;留言商讨。 0、ARM处理器功能扩展和架构演变 1、cortex A9 &#xff08;ARMv7指令集&#xff09;-----传说中的CPU 2、Exynos4412芯片框图-----…

arm linux 内核配置,Linux + ARM驱动开发环境配置(内核配置与编译)

要想编写驱动&#xff0c;首先是建立内核目录树。 ** 1、查看ARM开发板的内核版本 ** uname -a 我的arm开发板的版本是3.4.39 ** 2、安装必要的软件包 ** sudo apt-get install build-essential kernel-package libncurses5-dev sudo apt-get install ncurses-dev ** 3、下载一…

ARM 内核寄存器 和 基本汇编语言讲解

对于嵌入式开发者来说&#xff0c;了解汇编语言和内核寄存器是对内核深入理解的基础..增加 2.2 汇编伪指令 章节 2021/12/12..完善 2.3 ARM汇编指令集 2021/12/12..增加 3.1 不同编译器的反汇编 2021/12/14 ..增加 3.2 C和汇编 比较分析 …

jtag访问arm内核寄存器

jtag的原理图jtag接口访问arm Device ID code register的步骤jtag接口访问arm Device ID code register的功能验证的testbenchjtag接口访问arm Device ID code register的功能验证的波形图jtag相关注意细节jtag访问arm内核寄存器的步骤与DTR相关的协处理器指令介绍最后通过封装…

关于ARM内核经典系列ARM7/ARM9/ARM11和Cortex®-A/Cortex®-R/Cortex®-M的产品线简单介绍

目前市场上的嵌入式单片机或者Soc大部分都是ARM的内核架构&#xff0c;相信大家对Cortex-M3/Cortex-M4&#xff0c;Cortex-A53/Cortex-A73等有所耳闻。 ARM公司主要是设计处理器内核的公司&#xff0c;之前的ARM7/ARM9/ARM11被划分为经典的ARM内核&#xff1b;后面ARM公司分出…

常见前端面试之VUE面试题汇总三

7. Vue 中封装的数组方法有哪些&#xff0c;其如何实现页面更新 在 Vue 中&#xff0c;对响应式处理利用的是 Object.defineProperty 对数据进 行拦截&#xff0c;而这个方法并不能监听到数组内部变化&#xff0c;数组长度变化&#xff0c;数 组的截取变化等&#xff0c;所以需…

配置arm内核实现NFS功能

NFS介绍 NFS&#xff08;Network File System&#xff09;即网络文件系统&#xff0c;是FreeBSD支持的文件系统中的一种&#xff0c;它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中&#xff0c;本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件&…

什么是arm-arm体系架构版本(指令集版本)-arm内核版本

1、什么是arm&#xff1f; arm公司&#xff1a;是英国一家电子公司的名字&#xff0c;该公司成立于1990年11月&#xff0c;是苹果电脑&#xff0c;Acorn电脑集团和VLSI Technology的合资企业。Acorn曾在1985年推出世界上首个商用单芯片RISC&#xff08;Reduced Instruction Se…

ARM内核——寄存器功能讲解

根据“ARM-thumb 过程调用标准”&#xff1a; 通用寄存器 通用寄存器包含R0到R12&#xff0c;13个寄存器 R0-R3 用作传入函数参数&#xff0c;传出函数返回值。在子程序调用之间&#xff0c;可以将 r0-r3 用于任何用途。被调用函数在返回之前不必恢复 r0-r3。如果调用函数需…

ARM内核版本

ARM架构CPU发展历程&#xff1a; &#xff08;https://en.wikipedia.org/wiki/ARM_architecture#CPU_modes&#xff09;

嵌入式芯片的硬件组成(ARM内核)

嵌入式最小硬件系统的6部分 基于ARM内核的嵌入式芯片的硬件组成 连接到系统总线上的高带宽组件主要包括&#xff1a; 存储器及控制器、电源管理与时钟控制器、中断控制器、DMA控制器、GPIO端口、互联通信组件、定时计数组件、模拟通道组件。

ARM内核全解析

前不久 ARM 正式宣布推出新款 ARMv8架构 的 Cortex-A5 0处理器系列产品&#xff0c;以此来扩大ARM在高性能与低功耗领域的领先地位&#xff0c;进一步抢占移动终端市场份额。Cortex-A50是继 Cortex-A15 之后的又一重量级产品&#xff0c;将会直接影响到主流PC市场的占有…

ARM 内核分类

根据ARM官方资料和网上资料整理。 先来一张Architecture的图片 ARM微处理器系列 ARM 微处理器目前包括下面几个系列&#xff0c;以及其它厂商基于 ARM 体系结构的处理器&#xff0c;除了具有 ARM 体系结构的共同特点以外&#xff0c;每一个系列的 ARM 微处理器都有各自的特点和…

ARM内核结构

ARM内核有4个功能模块T、D、M、I&#xff0c;可供生产厂商根据不同用户的要求来配置生产ARM芯片。 其中&#xff1a;T功能模块表示16位Thumb&#xff0c;可以在兼顾性能的同时减少代码尺寸。M功能模块表示8位乘法器。D功能模块表示Debug&#xff0c;该内核中放置了用于调试的结…

ARM内核、指令集等简介

文章目录 1.ARM架构学习1.1.ARM相关背景介绍 2.ARM指令集2.1 A32指令集2.2 A64指令集2.3 代码举例说明 3.ARM与RISC、CISC的关系4.ARM与哈佛结构、冯诺依曼结构 1.ARM架构学习 ARM即是公司名&#xff0c;是一家英国的公司&#xff0c;也是芯片名&#xff0c;随便嵌入式设备的发…

ARM 之五 发展史及各时期内核(ARM1 ~ ARM11 / Cortex)介绍

很久很久以前   1978年12月5日&#xff0c;物理学家赫尔曼豪泽&#xff08;Hermann Hauser&#xff09;和工程师 Chris Curry&#xff0c;在英国剑桥创办了CPU公司&#xff08;Cambridge Processing Unit&#xff09;&#xff0c;主要业务是为当地市场供应电子设备。1979年&a…

ARM内核与架构

1、ARM架构分类 ARM架构发展至今分为 ARMv1~ARMv8 &#xff0c;不同架构之间指令集存在差异。根据架构类型又开发出不同内核&#xff0c;常用的 ARMv7 架构有三种类型的内核&#xff1a; 1&#xff09;Cortex-A&#xff1a;用于高性能应用&#xff0c;主要支持分页内存管理单…

ARM内核科普

从1985年ARMv1架构诞生起&#xff0c;到2011年&#xff0c;ARM架构已经发展到了第八代ARMv8。 Cortex-A32/35/53/57/72/73/77/78采用的都是ARMv8架构&#xff0c;这是ARM公司的首款支持64位指令集的处理器架构。 3&#xff09; ARM11之前的处理器和指令集架构 ARM11芯片之前&…

IDC发布中国低代码市场报告,得帆独立低代码市占率第一

近日&#xff0c;国际数据公司IDC公布了《2022下半年中国低代码与零代码软件市场跟踪报告》&#xff08;以下简称“报告”&#xff09;。 2022下半年中国低代码与零代码软件市场规模为15.6亿元人民币&#xff0c;得帆低代码PaaS平台凭借过硬的产品优势和深厚的客户实践经验&am…