int * pArr;
pArr = (int *)malloc(4 * length);
相当于 构造了这样一个数组 int pArr[length];
#include <stdio.h>
#include <malloc.h>
void function(int * q) {
//*p = 200; //报错 因为没有变量*p
//q = 200; //报错,类型不一致
//**q = 200; //*q是一个整型变量,只有指针变量前面才能加 *
*q = 200;
//增加free(q)
free(q); //释放q指向的内存地址 q指针没有指向
}
int main() {
int *p = (int *)malloc(sizeof(int));
*p = 10;
printf("%d\n", *p); //10
function(p);
printf("%d\n", *p); //200
/*
* 构造动态一维数组
*/
int a[5]; //静态的一维数组 int 占4个字节 共占20个字节
int length;
int * pArr;
printf("请输入一维数组的元素个数:\n");
scanf_s("%d", &length);
pArr = (int *)malloc(4 * length); //这里构造了一个动态的一维数组
//对动态的一维数组进行操作
for (int i = 0; i< length; ++i){
scanf_s("%d", &pArr[i]);
}
printf("华丽的分割线------------------------\n");
for (int i = 0; i < length; ++i){
printf("%d\n", pArr[i]);
}
while (true){}
return 0;
}
free(pArr); 手动释放动态分配的内存
#include <stdio.h>
#include <malloc.h>
void function(int * q) {
//*p = 200; //报错 因为没有变量*p
//q = 200; //报错,类型不一致
//**q = 200; //*q是一个整型变量,只有指针变量前面才能加 *
*q = 200;
//增加free(q)
free(q); //释放q指向的内存地址 q指针没有指向
}
int main() {
int *p = (int *)malloc(sizeof(int));
*p = 10;
printf("%d\n", *p); //10
function(p);
printf("%d\n", *p); //200
/*
* 构造动态一维数组
*/
int a[5]; //静态的一维数组 int 占4个字节 共占20个字节
int length;
int * pArr;
printf("请输入一维数组的元素个数:\n");
scanf_s("%d", &length);
pArr = (int *)malloc(4 * length); //这里构造了一个动态的一维数组
//对动态的一维数组进行操作
for (int i = 0; i< length; ++i){
scanf_s("%d", &pArr[i]);
}
printf("华丽的分割线------------------------\n");
for (int i = 0; i < length; ++i){
printf("%d\n", pArr[i]);
}
free(pArr);//手动释放动态分配的内存
while (true){}
return 0;
}