二维数组的三种内存模型

本文详细探讨了C语言中二维数组的三种内存模型,包括连续存储、行优先存储和列优先存储方式,深入理解这些内存布局对于优化程序性能和有效管理内存至关重要。
摘要由CSDN通过智能技术生成
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//把p1和p2中的字符串拼接到p3中
//p3每行的长度不固定
int myStrCat(char* p1[],int num1,char p2[10][30],int num2,char*** p3/*out*/,int* num3){
	char** pTmp = NULL;//辅助指针
	pTmp = (char**)malloc(sizeof(char*)*(num1+num2));
	int row_len=0;
	//p1数据copy到p3
	for(int i=0;i<num1;i++){
		row_len = strlen(p1[i]);
		pTmp[i] = (char*)malloc(sizeof(char)*(row_len+1));//注意多分配一字节存'\0',否则释放内存出错
		strcpy(pTmp[i],p1[i]);
	}
	//p2数据copy到p3
	for(int i=0;i<num2;i++){
		row_len = strlen(p2[i]);
		pTmp[i+num1] = (char*)malloc(sizeof(char)*(row_len+1));//注意多分配一字节存'\0',否则释放内存出错
		strcpy(pTmp[i+num1],p2[i]);
	}
	*num3 = num1+num2;
	*p3 = pTmp;//挂上
	return 0;
}

int freeMyStrCat(char*** p,int row){//释放二维数组
	char** tmp = *p;
	for(int i=0;i<row;i++){
		if (tmp[i]!=NULL
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值