#include <stdio.h>
#include <stdlib.h>
#include <malloc.h> //包含头文件 main(){
int i = ;//栈中
int arr[];//栈中
int* p = malloc(sizeof(int) * );//p在栈中,malloc在堆里面长度为10个整型,malloc出来的内存是连续的。
*p = ;
*(p+) = ; printf("%#x\n", p);//0x3e3cf0
printf("%d\n", *p);//10
printf("%d\n", *(p+));//20
printf("%d\n", p+);//4078836
printf("%d\n", *(p+));//0
printf("%d\n", *(p+));//0
free(p);
system("pause");
} #include <stdio.h>
#include <stdlib.h> main(){
int i = ;
int* p = &i;
int** q = &p;
int*** l = &q; printf("i的值为%d\n", ***l);//3
//l表示取出l内存空间的值,*l表示取出l内存空间值的内存空间的值,**l表示取出l内存空间值的内存空间值的内存空间的值。
system("pause");
}
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
main(){
printf("请输入学生人数:");
int count;
scanf("%d", &count);
//int b在C中是系统在栈中申请内存,系统负责回收的。
// malloc申请的是堆内存由程序员释放。
//栈内存只有2M,连续的内存空间,先进来的后释放。 堆的内存和物理内存一样大,
//堆不连续是用链表表示的,链表查找比连续的麻烦但是增删比连续的快。
//C是面向过程的没有对象概念所以没有new,malloc就是new。
//静态内存是栈上分配的,编译的时候就已经分配好了,程序的怎个运行期间都存在,
//例如全局变量和static变量。动态内存是堆上malloc或者new分配的。 //根据学生人数去动态申请堆内存 ,
int* p = malloc(sizeof(int) * count);//count个int类型 int i;
for(i = ; i < count; i++){
printf("请输入第%d个学生学号:", i);
scanf("%d", p+i);
} printf("请输入新增的学生人数:");
int newCount;
scanf("%d", &newCount);
p = realloc(p, sizeof(int) * (count + newCount));//扩充p内存 for(i = count; i < count + newCount; i++){
printf("请输入第%d个学生学号:", i);
scanf("%d", p+i);
} for(i = ; i < count + newCount; i++){
printf("第%d个学生的学号是:%d\n", i, *(p+i));
}
system("pause");
}
05-06 17:39