加缓存的目的就是为了跑得快
空悬指针
int * BuyMen(const int n)
{
int *ip = (int*)malloc(sizeof(int)*n);
(ip在栈区)(malloc在堆区申请)(ip指向堆区控件)(可以被任何类型接受)
无类型指针 泛型指针 必须强转才能使用
return ip;
}
int main()
{
int *p = BuyMen(10);
//接收开辟的空间
free(p);
return 0;
}
动态开辟二维数组
int main()
{
int row,col;
cin>>row>>col;
int sum = row * col;
int *p = (int *)malloc(sizeof(int)*a)
return 0;
}
```静态数组连续 动态数组不连续
释放不释放
生存周期
访问方式
开辟的堆栈
*(*(s+1))
*(*(ar+1))
ar+1 和 s+1 能力不同
s和ar类型不同
一个是一维指针+1 一个是指向的数组加1
运行内存 (虚拟内存)
适配层 适配器 操作硬件
文本文件 转化为ascii码值
二进制文件
适配层(windowsapi) ->驱动程序
文件 打开读写关闭
I/O操作
int main()
{
int ar[]={12,2,3,4,5,6,7,8};
int n =sizeof(ar)/sizeof(ar[0]);
FILE *fp1 = fopen("1.txt","w");
wb
//FILE *fp1 = fopen("1.txt","r");
//FILE *fp1 = fopen("1.txt","a");
//w 和a 会创建文件 w打开会清空所有数据 a不会抹去数据
//路径必须合法
//一个\代表转义
//绝对路径 从盘符出发· 相对路径 程序当前程序目录下
//对了非0 错了NULL
if(NULL == *fp1)
{
exit(-1);
return -1;
}
for(int i =0;i<n;++i)
{
printf("%d",ar[i]);
fprintf(fp,"%d",ar[i]); 文件指针 格式控制符,输出字符
fprintf(stdout,"%d",ar[i]);
//stdin stdout
wb
fwrite(ar,sizeof(int),n,fp);
//buf 存入length 存入个数 File*
fscanf(fp,"%d ",&ar[i]);
fread(buf,sizeof(int),n,fp);
}
fclose(fp);
fp = NULL;
}
feof()
fget()
fgets()
fputc()
fputs()
while(!feof(fp))
{
ch = fgetc(fp);
printf("%c",ch);
}
fclose(fp);
fp = NULL
二进制 内存和磁盘中显示的一样 读取的快 文本文件有字符串转化为数值