int **p=(int**)malloc(m*sizeof(int*));怎么理解,可以一步一步解释下不,尤其是两个*号连着的地方 20
1个回答
展开全部
int **p表示这是一个二维指针:指向指针的指针。这样理解:int a; <-- int *p1; <-- int **p;
malloc是c语言中用来在堆空间手动申请空间的函数。
参数为要申请的空间大小。返回类型为void*万能指针。
此处申请空间大小为:m个sizeof(int*) 的大小。int*表示指向int 类型的指针,大小取决于具体机器和编译器。32/64位机一般为32/64位,但不绝对。
最后(int**) 表示强制类型转换,将 void* 转换为 int** 类型,一般强制转换可能会有潜在的精度损失等,但是此处因为都是指针,所以不用担心。
综上所述,这句话实现了这样的功能:申请m个能够能够存放 int* 类型的空间,并将首地址返回给一个二维指针p;
内存可能的分布情况:
int a <-- int *; <-- int **p;
int b <-- int *;
int c <-- int *;
int d <-- int *;
malloc是c语言中用来在堆空间手动申请空间的函数。
参数为要申请的空间大小。返回类型为void*万能指针。
此处申请空间大小为:m个sizeof(int*) 的大小。int*表示指向int 类型的指针,大小取决于具体机器和编译器。32/64位机一般为32/64位,但不绝对。
最后(int**) 表示强制类型转换,将 void* 转换为 int** 类型,一般强制转换可能会有潜在的精度损失等,但是此处因为都是指针,所以不用担心。
综上所述,这句话实现了这样的功能:申请m个能够能够存放 int* 类型的空间,并将首地址返回给一个二维指针p;
内存可能的分布情况:
int a <-- int *; <-- int **p;
int b <-- int *;
int c <-- int *;
int d <-- int *;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询