C语言char p(charmalloc(100)

2020-11-24 22:09:43 字数 4989 阅读 3333

1楼:匿名用户

堆参看资料

:http://blog.csdn.***/misskissc/article/details/17717717

int *p = (char *) malloc(100)

2楼:文化厨子

这个要根据你使用的编译器来决定 ,最简单的方法#include

intmain()

你不用管那些,你只要free它就好了,它这个**,也只是将堆标记为废弃,回头 有系统中的堆管理器来负责 管理。。

c语言中怎么得到一个指针所指的空间的大小,如:char *p=(char *)malloc(10*sizeof(char));

3楼:金色潜鸟

char *p=(char *)malloc(10*sizeof(char)); 我们知道 是 10。但我们没有简单方法能获得“10”。

通过 calloc, malloc, realloc 分配的空间 (实际消耗的heap空间) 用 函数

size_t _msize( void *memblock ); 可以获得。

获得的字节数,可能大于10。估计原因同 分配结构空间类似,考虑对齐或考虑什么,要多用去一点空间。

#include

#include

main()

我的编译器编译运算结果,输出 是 16。

4楼:情義

"通过 calloc, malloc, realloc 分配的空间 (实际消耗的heap空间) 用 函数

size_t _msize( void *memblock ); 可以获得。

具体如下:

#include

#include

main()

编译器编译运算结果,输出 是 16。"

5楼:匿名用户

得不到的,定义常量吧

6楼:匿名用户

只能10*sizeof(char)

c语言定义char **p;p=(char *)malloc(sizeof(char)*5);p是什么?

7楼:匿名用户

char **p;定义一个二维指针

p=(char **)malloc(sizeof(char*) *5); 先分配行空间

for( i=0;i<5;i++ )

p[i]=(char *)malloc(sizeof(char)*15); 再分配每一行的空间

这样才正确

8楼:左灬王

堆指针 **p是堆指针的地址

void getmemory(char *p){ p=(char *)malloc(100); } void test(void){ char *str=null; getmemory(str);

9楼:匿名用户

//这是原来的函数,使用的是值传递方式

void getmemory(char *p)//这是正确的内存分配函数,使用的是双重指针,传递进来的是str的指针地址,*p就是原来的str

void getmemory2(char **p)//这是使用引用的内存分配函数

void getmemory3(char* &p)void test(void)

c语言中(char *)malloc (sizeof (char));这行**是怎么解释的

10楼:匿名用户

sizeof(char)计算char类型占用的字节数。sizeof(char)== 1

malloc申请动态内存

(char *)把指针强制转换为char类型指针。

合起来就是动态申请一个char类型大小的内存。

c语言,怎么用malloc申请一个100000个变量的字符串数组?

11楼:匿名用户

这是一个二维数组,所以要定义一个二维指针才能完成相应的操作

char **m ;

m = (char**)malloc(sizeof(char *) * 100000); //行数

int i=0;

for( i=0;i<100000 ;i++ )接下来,就和使用二维数组一样的操作m了,如:

strcpy( m[0], "hello" );

m[0][0]= 'h' ;

12楼:匿名用户

可以通过以下语句实现:

char *p; //定义指针变量

p = (char *)malloc(100000);//申请空间并赋值给p。

解析:malloc为内存分配函数,其定义为void * malloc(size_t size);

功能为申请size大小的内存长度,并返回分配到的地址值。

而字符类型,每个元素占1个字节空间,所以100000个变量的总空间就是100000字节,于是参数size为100000。

13楼:匿名用户

#include

#include

#include

usingnamespacestd;

//申请的arr空间类似:#代表point*代表data;那么他就是一个4行5列的数据

//#*****#*****#*****#*****//这是本来应该存储的形态

//####********************//这是我们写出来的结构那么解释一下

//第一个#即头指针arr,第二个#他指向了第第二组的头即第二行的首元素第三个#指向了第三行的首元素第四个#同理

//head即第一个*的位置

//二维数组arr[i][j]等价于*(arr+i)+j;又等价于arr[i]+j;(此处arr[i]代表地址)

template

type**new_array_2d(introw,intcol)//row是行col是列

//this指针即为date->func()等价于func(&date),隐含传递了this;

}//现在arr[i][j]的地址即为这个数据的指针

}return(type**)arr;//返回这个数组头指针

}template

voiddelete_array_2d(type**arr,introw,intcol)//释放二维数组row行col列

}if(arr!=null)

}intmain()

}for(inti=0;i

cout<

}delete_array_2d(p,nrow,ncol);//释放内存

system("pause");

return0;

}你申请的是一维的 你想要的是二维的 当然报错

14楼:修和玉于旋

这是以前我写的**,字符串存在buffer指针所在的缓冲区中intreadbuffer(char

**buffer)

free(buftemp);//释放

buffer[buf_totalcount-1]='\0';

//填充结束符

returnbuf_totalcount-1;//返回实际字符串的长度

}希望对你有帮助

c语言 关于malloc的问题 char *p; p=(char *)malloc (20 * sizeof (char ) ); 和char p【20】有什么区别呢

15楼:匿名用户

void main(int argc, char * argv){int nc=100, nr=200;

int i,j;

char **a; // a[nr][nc] -- *a[nr] -- a[j][i]

a = (char **) malloc(sizeof(char *) * nr);

for (j=0;j释放空间: free(a);

16楼:匿名用户

这个首先你要搞明白堆空间和栈空间,用malloc分配的内存是在堆空间的,如果你不free,这个空间在程序的运行过程中就一直存在。如果是定义的临时的数组变量,那他是在栈里面,这个空间在函数执行完,会被系统**。

定义的数组不可能发生内存不够的现象,如果不够,编译都通不过。

17楼:匿名用户

malloc是在堆空间开的内存 属于静态的 必须要程序员自己用free()去释放这段空间

当内存不够时 malloc()回返回错误的

char p【20】 是在栈空间中开启的内存 当次函数结束栈中的所有变量都会被释放

计算机c语言中 void f(char *p) { p=(char *)malloc(10); s

18楼:冽冽不是逗比

不会有任何影响

当然 如果你去掉p=(char *)malloc(10);这行就会有影响了

实际上 当你的 指针假定是 p1 传进来的时候 函数会生成一个 p 这个p会指向p1指向的地址

此时 改p地址里的内容 就是改了p1里的内容但是 经过 再一次对p赋值后 p1和p已经不是指向同一个地址了 所以 就不会影响到外面的p1了

19楼:匿名用户

会影响的,你自己可以在电脑上验证

c语言中"定义"char"a 1"和char"a“1”和c

1楼 风雷雪电 第一bai 个char a 1,则a的值du为数值1。 第二个语法zhi 错误。第三个char a 1 ,则daoa的值为字回符 1 ,对应的数值请参考ascii码,答是数值49。此时 printf d a 得数值49printf c a 得字符1 c语言,char a 和char ...

c语言输入整数1ltnlt100在输入n个字符将

1楼 匿名用户 1,读入字符组 2,后判断每个字符的类型 3,转换该转的就行了 2楼 include int main str n 0 puts str return 0 3楼 情缘掠影 大小写转换是变量大写加32变小写,小写减32变大写。 c语言输入一个整数 1 4楼 匿名用户 include s...