1、C到C++安全性增强
2024-08-24 19:13:30
1、C语言
#include <stdio.h> int main(void)
{
const int a = 10; //在C语言里这里不赋值可以编译的过去,但是这里不初始化以后就没办法初始化
//a = 100; 这里不能改但是下面的方法可以把a的值给改了
int *p = &a; //如果写成const int *p =&a;拿掉int,const *p ,const修饰的是 *p ;*p就无法改变 *p = 100;
char *q = (char *)malloc(100);//虽然 char *q = malloc(100);也可以但是不严谨
printf("a = %d\n",a);
return 0;
}
//const int a ; int const a; // 相等 因为如果把int去掉都是const a;
//int *const p 拿掉int,*const p这样的话修饰的是p,所以p的值不能改变,p指向的可以改变
//const int *const p;这样就都不能改变。
C++
#include <iostream>
#include <stdlib.h>
using namespace std; int main()
{
const int a = 100;//真正的const
//如果一开始不初始化会报错
//a = 200; //会报错
//名修栈道,暗度陈仓
// int *p = &a; //会报错,类型不匹配要写应该写成const int *p =&a
// *p = 10; //在C语言里这里的a值是可以改变的,但是在C++不行 // char *q = malloc(100);//在C语言不会报错,C++报错,因为malloc默认是void *类型
//所以应该写成
char *q = (char*)malloc(100);
//cout <<a<< endl;
return 0;
}
最新文章
- MySQL数据库之------DOS命令行的基本操作
- 【原】iOS学习之Swift之语法2(精简版)
- Spring核心概念之AOP
- UVa 11825 (状压DP) Hackers&#39; Crackdown
- hdu 1709 The Balance
- ASP.NET导出EXCEL类
- Web应用指纹识别
- jquery中push()的用法(数组添加元素)
- 推荐五个最好的MySQL GUI工具
- POJ 1475 Pushing Boxes 搜索- 两重BFS
- MySQL-测试卷一
- C#小知识点记录,对象的深拷贝
- MyEclipse过期后怎么破解
- C语言函数嵌套调用作业总结
- 【Swift】 iOS开发容易产生Bug的地方
- MarioTCP:一个单机可日30亿的百万并发长连接服务器
- 《Java》第八周学习总结
- Python学习的相关文件链接
- mitmproxy(中间人攻击工具)安装及使用
- Couldn&#39;t find log associated with operation handle: OperationHandle [opType=EXECUTE_STATEMENT, getHandleIdentifier ()=5687ff62-aa71-4b47-af6c-89f6a3f7a1fe]