首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用指针和Malloc的C网格

使用指针和Malloc的C网格
EN

Stack Overflow用户
提问于 2011-03-21 11:53:00
回答 4查看 1.3K关注 0票数 0

我正在努力学习一些课堂上的例子,并且一直停留在以下几个方面:

数组网格应该具有长度宽度,每个条目代表单元格的一列。有一些占用单元格的列应该是长度高度为malloc‘’ed的字符数组。

使用给定的标头:

代码语言:javascript
运行
AI代码解释
复制
void grid(char **grid, int width, int height)

在另一个文件中,网格定义为:

代码语言:javascript
运行
AI代码解释
复制
char **grid;

正如我已经说过的,我一直在使用malloc,我现在有:

代码语言:javascript
运行
AI代码解释
复制
int x;
*grid = malloc(width * sizeof(char));

        for(x = 0; x < width; x++){
            grid[x] = malloc(height * sizeof(char));
        }

谁能看看如何正确地完成“一些占用单元格的列应该是长度高度为malloc‘’ed的字符数组”的正确方法,因为我不明白这行是怎么回事:

gridx =malloc(高度*大小(Char));

等于一个字符数组。

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-21 11:58:48

在C中,数组是数组的第一个元素的指针。因此,数组只是一个内存块,数组变量指向这个内存块中的第一个元素。

malloc()保留指定大小的新内存块。要知道类型的大小(即存储该类型的一个变量所需的字节数),可以使用sizeof运算符。因此,一个字符需要sizeof(char)字节,因此高度字符需要height * sizeof(char)

因此,使用malloc()调用,您将分配一个内存块来存储数组的所有元素,malloc()将一个指针返回到第一个元素上。

使用C对数组变量的定义(指向第一个元素的指针),您可以将malloc(...)的结果分配给数组变量。

票数 4
EN

Stack Overflow用户

发布于 2011-03-21 11:58:35

char** grid;是指向指针的指针。

代码语言:javascript
运行
AI代码解释
复制
grid = malloc( width* sizeof( char* ) ) ;  // Statement 1

for( int i=0; i<height; ++i )
{
    grid[i] = malloc( height ) ; // Statement 2
}

理解char** -> char* -> char。因此,首先需要预留地址的宽度。在报表1中实现了这一目标。现在,这些索引中的每一个都应该指向存储高度字符的内存位置,并由语句2实现。

图表表示听起来比描述更清晰。希望这能帮上忙!

票数 6
EN

Stack Overflow用户

发布于 2011-03-21 11:57:49

用这个:

代码语言:javascript
运行
AI代码解释
复制
grid = malloc(width * sizeof(char *));

您希望将width指针的空间分配给char,然后正确地将各个指针分配给循环中的height字符。

使用ty胡枝子使这一点更加可见:

代码语言:javascript
运行
AI代码解释
复制
typedef char * charpointer;
charpointer * grid = malloc(width * sizeof(charpointer));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5382858

复制
相关文章
c语言二级指针的使用,malloc内存申请
#include<stdio.h> #include<stdlib.h> void AllocateMemory(int **pGetMemory, int n) { int *p = (int*)malloc(sizeof(int) * n); if (p == NULL) { *pGetMemory = NULL; } else { *pGetMemory = p; } } int main() {
用户4645519
2020/09/08
1.9K0
c语言二级指针的使用,malloc内存申请
c语言中malloc的作用,malloc函数-malloc函数,详解
说明:malloc 向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针。
全栈程序员站长
2022/09/02
2.3K0
c++ new和malloc的区别
本文属转载,原文博客链接:http://blog.csdn.net/linux_ever/article/details/50533149
用户7886150
2021/02/15
1.1K0
malloc.c
glibc-2.14中的malloc.c源代码,供研究malloc和free实现使用:
一见
2019/03/14
4.8K0
c语言malloc函数的用法和意义
当我们需要做一个成绩管理系统,人数可能为全校学生,也可能为一个班的学生,当我们开辟一个班的数组大小时,如果要存储整个学校的人数时,会出现内存不够用的情况;当我们开辟全校人数大小的数组时,输入一个班人数的大小时,会出现内存浪费的情况。 为了应对上述问题,我们引入malloc函数。 malloc时动态内存分配函数,用于申请一块连续的指定大小的内存块区域以void*类型返回分配的内存区域地址
全栈程序员站长
2022/08/11
1.3K0
c语言malloc函数的用法和意义
当我们需要做一个成绩管理系统,人数可能为全校学生,也可能为一个班的学生,当我们开辟一个班的数组大小时,如果要存储整个学校的人数时,会出现内存不够用的情况;当我们开辟全校人数大小的数组时,输入一个班人数的大小时,会出现内存浪费的情况。 为了应对上述问题,我们引入malloc函数。 malloc时动态内存分配函数,用于申请一块连续的指定大小的内存块区域以void*类型返回分配的内存区域地址
Twcat_tree
2022/11/30
6160
详解c++指针的指针和指针的引用
展示一下使用指针的指针和指针的引用修改传递给方法的指针,以便更好的使用它。(这里说的指针的指针不是一个二维数组) 为什么需要使用它们 当我们把一个指针做为参数传一个方法时,其实是把指针的复本传递给了方法,也可以说传递指针是指针的值传递。 如果我们在方法内部修改指针会出现问题,在方法里做修改只是修改的指针的copy而不是指针本身,原来的指针还保留着原来 的值。我们用下边的代码说明一下问题: int m_value = 1; void func(int *p) { p = &m_value; } i
lpxxn
2018/01/31
1.3K0
【C语言】动态内存开辟的使用『malloc』
​ 所谓动态内存分配(Dynamic Memory Allocation)就是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。动态内存分配不象数组等静态内存分配方法那样需要预先分配存储空间,而是由系统根据程序的需要即时分配,且分配的大小就是程序要求的大小。
謓泽
2022/12/12
8320
【C语言】动态内存开辟的使用『malloc』
C++核心准则:R.10: 避免使用malloc()和free()
malloc() and free() do not support construction and destruction, and do not mix well with new and delete.
面向对象思考
2020/03/27
7370
C++核心准则:R.10: 避免使用malloc()和free()
C和指针学习
这个名字是编译器默认的输出名。如果要修改可执行文件的名字可以加-o参数:gcc -o myexec main.c
Java架构师必看
2021/07/13
3290
c语言指针的基本使用
指针(pointer)是C语言中一个重点和难点,以下是对其基本使用的一些总结,适合入门的同学。除了是对自己的学习的总结之外,也希望能对大家有所帮助。
梦飞
2022/06/23
9140
C语言(函数指针和指针函数)
经翻阅小学五年级语文课本得知,一个短语中的最后部分,是这个短语的中语,其余部分是定语(修饰语)。也就是说,以上短语相当于:
用户2617681
2019/08/08
1.8K0
C语言(函数指针和指针函数)
new和malloc的区别
1.new内存分配失败时,会抛出bac_alloc异常,它不会返回NULL;malloc内存分配失败时会返回NULL。
kdyonly
2023/03/03
3920
C++ 指针和const指针赋值
即const指针既可以指向const数据又可以指向非const数据(数据为非指针类型)。
全栈程序员站长
2022/09/14
7710
C++ 指针和const指针赋值
关于C语言中的malloc和free函数的用法
一、malloc()和free()的基本概念以及基本用法:1、函数原型及说明:void*mallocC/C++
Java架构师必看
2021/03/22
1.5K0
malloc 背后的虚拟内存 和 malloc实现原理
首先需要知道的是程序运行起来的话需要被加载的物理内存中,具体到计算机硬件就是内存条。操作系统启动的时候先把自己加载到物理内存的固定位置(一般为底部),物理内存的其他位置就用来运行用户程序。程序就是一堆指令,程序运行可以简单抽象为把指令加载到内存中,然后 CPU 将指令从内存载入执行。
C语言与CPP编程
2023/09/06
4960
malloc 背后的虚拟内存 和 malloc实现原理
malloc 和 calloc 的区别
calloc 会申请内存,并全初始化为 0;而 malloc 只申请内存,并不作初始化。
ClearSeve
2022/02/10
2.2K0
c语言之函数指针和指针函数的区别
函数指针:是指向函数的指针变量,因而函数指针本身应该是指针变量,只不过指针变量指向函数。
西西嘛呦
2020/08/26
1.2K0
【c语言】malloc函数详解[通俗易懂]
谈到malloc函数相信学过c语言的人都很熟悉,但是malloc底层到底做了什么又有多少人知道。 1、关于malloc相关的几个函数 关于malloc我们进入Linux man一下就会得到如下结果:
全栈程序员站长
2022/07/01
1.6K0
【c语言】malloc函数详解[通俗易懂]
C - 指针C语言指针的总结
C语言指针的总结 1. 变量 不同类型的变量在内存中占据不同的字节空间。 内存中存储数据的最小基本单位是字节,每一个字节都有一个内存地址,这个地址是一个十六进制的数。 声明一个变量,在内存中是从高字节向低字节分配连续的指定字节数的空间。 任何数据在内存中都是以其二进制的补码形式存储的,低位存储在低字节,高位存储在高字节。 变量的值:存储在变量中的数据,叫做变量的值。 变量的地址:一个变量是由一个或者多个字节组成的,组成这个变量的低字节的地址,就是这个变量的地址。 如何取出变量的地址:使用&(取地址运算符)运
xx_Cc
2018/05/10
4.2K0

相似问题

C指针malloc

41

C:指针算法和malloc() -不去?

20

使用c++指针正确使用Malloc和free

13

C中结构和指针的malloc

80

C中的指针、malloc和char

32
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文