为什么int* a=(int*) malloc(n* sizeof.
发布网友
发布时间:2024-01-07 03:17
我来回答
共1个回答
热心网友
时间:2024-04-24 02:11
int *a=(int *)malloc(n*sizeof(int)); 表示定义一个int类型的指针变量a,并申请n*sizeof(int)个字节(即4*n个字节)的存储空间。
malloc是在C语言中是一个申请内存单元的函数。
函数原型:void *malloc(unsigned size);
功 能:分配size个字节的内存空间
返 回 值:成功,返回分配的内存单元的起始地址;否则返回0
举例说明如下:
// 下面的定义方法是正确的
int *a=(int *)malloc(n*sizeof(int)); // 定义指针,并分配内存单元
*a = 4; // 将值存入到指针a所指向的内存单元中
// 下面的定义方法就会出错
int *a; // 定义指针,没有分配内存单元
*a = 4; // 此时系统不知道该将4存入到哪个内存单元(因为指针未指向具体的内存单元(此时称该指针为野指针)),所以执行的时候会出错(编译没错)。
关于C++中vector< vector<int> >的含义.
个人理解,这个vector<int>申请的空间是动态的。在你定义vector的时候系统并不知道申请了多大的空间。属于动态申请空间就例如 int *a;a=(int *)malloc(n*sizeof(int));一样,当你调用新的输入的时候(直接输入也应该被重载了的)会分配新的空间达到一个动态调整空间大小的做用。而对于2维向量,的...
c语言 int *a = (int*)malloc(n*sizeof(int)); 是什么意思呀
int *a=(int *)malloc(n*sizeof(int)); 表示定义一个int类型的指针变量a,并申请n*sizeof(int)个字节(即4*n个字节)的存储空间。malloc是在C语言中是一个申请内存单元的函数。函数原型:void *malloc(unsigned size);功 能:分配size个字节的内存空间 返 回 值:成功,返回分配的内存单...
c语言求解释一下 a=(int *)malloc(n*sizeof(int))
应该是:int *a;a=(int *)malloc(n*sizeof(int));这个是动态内存分配 声明一个int型指针a,然后申请n个int型大小的区域(不一定是连续的区域,大部情况是链式区域),把这个内存区域的首地址赋值给指针变量a,这样就可以通过a来操纵申请的内存区域。
scanf("%d",&n); int*a=(int*)malloc(n*sizeof(int)); printf("%d",s...
因为int*的分配空间是确定的,你声明的a变量仅仅就是一个int*类型的变量,如果你把a声明为一个数组就可以那样分配了 你可以试试把他定义成 char类型的变量,因为一个char占一个字节内存,或许就可以实现你想要的结果
...sizeof(int)*n);和a=(int *)malloc(n*sizeof(int));意思一样吗...
第一个*是与int 合在一起,表示int 型的指针 第二个*是乘号,malloc的参数是要申请的内存的大小,sizeof(int) * n 或者 n*sizeof(int)的意思都是一样的,这句话的意思是 ,sizeof(int)=4,所以这句话的意思是申请一块 4*n 字节的内存空间,这句话一般是用来申请动态int型数组的 ...
(int*)malloc(sizeof(int)),这里面(int*)是什么意思?
前面的(int *)是用于强制类型转换,由于malloc()返回值是(void *)类型的,有一些编译器不会自动将其转换为用户定义的指针变量的类型(如VC++6.0等),在这种情况下,如果不加强制类型转换(或者强制转换的类型不一致),就会导致编译器报错。
C语言为数组动态分配内存并赋值,为什么第一种方法正确,第二种方法错...
a=(int *)malloc(sizeof(int)); //这个返回的东西只能放一个 int。 多次malloc 返回的地址是不保证连续的,每次的返回都只能容纳一个int。a[i]=i; 访问后面的第i个元素,但后面其实是没有东西的,非法访问来的。 如下图,红色的表示没有实际的东西,非法访问 ...
C语言动态内存的问题,for循环中为什么直接使用a[i]是错的?
a是一个指针,a是一个地址,你不是给一个地址申请内存,是要给指针申请内存 解决办法:把int *a去掉,然后“a=(int*)malloc(sizeof(int)*n);”改为“int *a=(int*)malloc(sizeof(int)*n);”或者"int *a;*a=(int*)malloc(sizeof(int)*n);"(不推荐,因为int *a时不知道这个指针...
C语言用malloc定义未知变量二维数组时缓冲区溢出是为什么?
程序这样写是可以的,应该是申请不到内存空间,导致那个内存地址空间溢出 你在a[i] = (int *)malloc(n*sizeof(int));下面补上if(a[i] == NULL)printf("over\n");来判断下是否申请不成功
...用malloc) ; 定义时是什么形式?(int*a? int**a?)
void main(){ int **a,i,n;if (!a=(int **)calloc(n,sizeof(int))) exit(0);for (i=0;i<n;i++)if (!*a[i] =(int *)calloc(n,sizeof(int)) exit(0);}