Python 官方文档:入门教程 => 点击学习
//#include "stdafx.h"#include <stdio.h>#include <stdlib.h>#include <string>///1.直接分配在栈上 通过char[][]方式in
//#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string>
///1.直接分配在栈上 通过char[][]方式
int mainStack()
{
char array[3][5] ={{'q','w','e','r','b'},{'a','s','d','f','n'},{'z','x','c','v','m'}};
for(int i = 0;i<3;i++)
{
for(int j=0;j<5;j++)
{
printf("pa[%d][%d]:%c\t",i,j,*(*(array+i)+j));
}
printf("\n");
}
return 0;
}
///2.行分配在栈上,列分配到堆上 通过指针数组方式
char* pa[3];
for (int i =0 ;i<3;i++)
{
pa[i] = (char*) malloc (sizeof(char)*5);
strcpy(pa[i],"asdf");
}
for(i =0 ;i<3;i++)
{
for(int j=0;j<strlen(pa[i]);j++)
{
printf("pa[%d][%d]:%c\t",i,j,*(*(pa+i)+j));
}
printf("\n");
}
for(i =0 ;i<3;i++)
{
free(pa[i]);
pa[i] == NULL;
}
//free(pa);
//pa = NULL; //因为是stack to heap so can't free pa
return 0;
}
///3.行分配在堆上,列分配到堆上 通过二级指针方式
int mainHeapHeap()
{
char** pa = (char**)malloc(sizeof(char*)*3);
for (int i=0;i<3;i++)
{
char* p = (char*) malloc (sizeof(char)*5);
pa[i] = p;
strcpy(p,"asdf");
}
for(i =0 ;i<3;i++)
{
for(int j=0;j<strlen(pa[i]);j++)
{
printf("pa[%d][%d]:%c\t",i,j,*(*(pa+i)+j));
}
printf("\n");
}
for(i =0 ;i<3;i++)
{
free(pa[i]);
pa[i] == NULL;
}
free(pa);
pa = NULL;
return 0;
}
///4.测试
int main(int arGC, char* argv[])
{
mainStack();
printf("------------------\n");
printf("------------------\n");
mainStackHeap();
printf("------------------\n");
printf("------------------\n");
mainHeapHeap();
return 0;
}
--结束END--
本文标题: c 二级指针3种内存分配
本文链接: https://www.lsjlt.com/news/189624.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0