Chinaunix首页 | 论坛 | 博客
  • 博客访问: 915306
  • 博文数量: 50
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 536
  • 用 户 组: 普通用户
  • 注册时间: 2020-05-07 21:35
文章分类

全部博文(50)

文章存档

2020年(50)

我的朋友

分类: C/C++

2020-06-04 16:19:11

#include
using namespace std;
#pragma warning(disable:4996)//->使用了c#的strcpy函数
int main()
{
一:
/*
int * a;
int b = 10;
*a = b;
->在这里b是整数,而*a是指针类,*a的确可以指向b的内容,
但是a一开始不知道地址(没有初始化),出错
*/
////正确写法
int b = 10;
int *a = &b;

//a初始化后,就可以这样写
*a = 20;->在这里的*a表示:*a指向的内容为20,其中a表示所指向的地址
cout << *a;   //>输出20






//char *a = "Aidasfjis";
//char *b = "afewonfwc";
//strcpy(a, b);->在这里没开辟空间存放内存,应该要有一个空的地址用于拷贝
//cout << "Department of " << a << endl;
//delete a;
//delete b;
//正确写法
//先定义了两个字符数组,然后定义两个字符指针,然后给指针赋值
 
char str1[10] = "Aidasfjis", str2[20] = "afewonfwc";
char *p1, *p2;
//分配内存空间,将字符串赋予p1,p2
p1 = str1;
p2 = str2;
strcpy(p1, p2);
cout < //->输出的是p1指针指向的内容
//如果是输出*p,结果为a,这是字符串的首地址的内容

三:使用new常错知识点-多次释放
const int a = 20;
char *string1 = new char[a + 1];
char *string2 = new char[a + 1];


strcpy(string1, "HAUSIHFJAS");



string2 = string1;
cout << string2 << endl;


    delete string1;
//delete string2;不可以多次释放同一个内存空间,
//因为在上面写道:string2 = string1;->意味着他们指向同一个内存空间
//不然会出现_BLOCK_TYPE_IS_VALID(pHead->nBlockUse的错误

system("pause");
return 0;


阅读(1625) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~