浅拷贝,深拷贝
来源:互联网 发布:四川大学成教学院网络 编辑:程序博客网 时间:2024/06/02 00:54
一、浅拷贝
含义:多个指针指向同一个内存(如生活中的共享)
特点:不能修改
1.如字符串常量就是浅拷贝,不允许修改
char *str1 = "hello world";
char str1[0] = 'a';//error
2.指针数组
int main()
{
char buf[100];
char *str[3];//指针数组
int i;
for(i=0;i<3;i++)
{
scanf("%s",buf);//123 1234 12345
str[i] = buf;
}
int main()
{
char buf[100];
char *str[3];//指针数组
int i;
for(i=0;i<3;i++)
{
scanf("%s",buf);//123 1234 12345
str[i] = buf;
}
for(i=0;i<3;i++)
{
printf("%s\n",str[i]);//12345 12345 12345
}
{
printf("%s\n",str[i]);//12345 12345 12345
}
return 0;
}
}
3.free
realloc
int *q = (int *)malloc(20*sizeof(int)); //创建新家
for(i = 0;i<10;i++)
{
*q[i] = *p[i]; //搬家
}
free(p); //释放旧地址
p = q; //更新新地址
q = NULL; //浅拷贝发生错误,多个指针不能指向同一个内存,所以q = NULL
二、深拷贝
含义:各自内存互不干扰,如自己的私人物品自己随意处理
//深拷贝 将从键盘中读取的字符串复制到另一数组里打印出
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<vld.h>
int main()
{
char buf[100];
char *str[3];//
int i;
for(i=0;i<sizeof(str)/sizeof(str[0]);i++)
{
scanf("%s",buf);
str[i] = (char*)malloc(strlen(buf)+1);
strcpy(str[i],buf);
}
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<vld.h>
int main()
{
char buf[100];
char *str[3];//
int i;
for(i=0;i<sizeof(str)/sizeof(str[0]);i++)
{
scanf("%s",buf);
str[i] = (char*)malloc(strlen(buf)+1);
strcpy(str[i],buf);
}
for(i=0;i<3;i++)
{
printf("%s\n",str[i]);
}
for(i = 0;i<sizeof(str)/sizeof(str[0]);i++)
{
free(str[i]);
}
return 0;
}
{
printf("%s\n",str[i]);
}
for(i = 0;i<sizeof(str)/sizeof(str[0]);i++)
{
free(str[i]);
}
return 0;
}
阅读全文
0 0
- 深拷贝&&浅拷贝
- 深拷贝||浅拷贝
- 浅拷贝,深拷贝
- 浅拷贝,深拷贝
- 深拷贝,浅拷贝
- 浅拷贝 深拷贝
- 浅拷贝.深拷贝
- 浅拷贝 深拷贝
- 深拷贝,浅拷贝
- 深拷贝、浅拷贝
- 深拷贝、浅拷贝
- 深拷贝+浅拷贝
- 深拷贝 浅拷贝
- 浅拷贝、深拷贝
- 浅拷贝、深拷贝
- 深拷贝、浅拷贝
- 深拷贝,浅拷贝
- 深拷贝、浅拷贝
- (九)事件的激活与调度
- HDU 2089 不要62 & HDU 3652 B-number(初级数位DP)
- 基于外部一个省市联动js框架,实现初始化特定的地址级联
- 文章标题
- HDU
- 浅拷贝,深拷贝
- gcc编译时的输出如何带上颜色
- TensorFlow框架(1)之Computational Graph详解
- 网站优化 14条--雅虎十四条优化原则
- zoj1889
- Elasticsearch
- 剑指offer第九题(变态跳台阶)
- Binder客户端和驱动端通信流程实例分析----以acquireWakeLock()函数为例 (二)
- spring常见面试题分析