前言
本次我们主要从:数据类型、数组、内存布局、指针初探C,在学校C之前我们需要安装开发环境,这里我使用的是Visual Studio
下载地址:Visual Studio,在这里Visual Studio有三个安装版本,分别为:Community 2017,Professional 2017,Enterprise 2017,具体区别就不说了,这里我推荐使用Community 2017,点击直接下载即可,下面我们就来简单的说一下Visual Studio安装
及初探C数据类型、数组、内存布局、指针。
Visual Studio安装步骤
1.下载链接Visual Studio。
2.安装成功后显示界面如下:
3.安装Visual Studio成功后,一般情况下不会创建桌面快捷键,我们需要自己创建桌面快捷键,我们在安装Visual Studio的目录下找到devenv.exe,D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE。
4.安装你需要的插件及工具:
选择顶部菜单栏:工具(T)---->获取工具和功能(T)。操作图如下:
安装开发相关工具
Visual Studio安装出错解决
错误:this application requires.net framework4.0/4.6,please install the.net framework then run this installer
解决办法是:在网上输入.net framework4.0/4.6下载安装一下 就可以了,在这里看你的电脑安装提示需要的是4.0/4.6或者更高的版本,按照提示去下载响应的版本即可。.net framework4.0/4.6下载链接。Microsoft .NET Framework介绍。
进入正题
上面一切安装都OK的话,下来我们直接创建我们的第一个项目。
方法一
方法二
文件------>新建------->项目
我们创建的第一个项目
1.基本数据类型
1.signed:有符号,可修饰char、int。Int是默认有符号的。
2.unsigned:无符号
整型 | 字节 | 取值范围 | 占位 符 |
int | 4 | -2,147,483,648 到 2,147,483,647 | %d |
unsigned int | 4 | 0 到 4,294,967,295 | %hd |
short | 2 | -32,768 到 32,767 | %u |
unsigned short | 2 | 0 到 65,535 | %hu |
long | 4 | -2,147,483,648 到 2,147,483,647 | %ld |
unsigned long | 4 | 0 到 4,294,967,295 | %lu |
char | 1 | -128 到 127 | %c |
unsigned char | 1 | 0 到 255 | %c |
1.为了得到某个类型或某个变量在特定平台上的准确大小,使用 sizeof 运算符。
2.表达式 sizeof(type) 得到对象或类型的存储字节大小。
3.long int 其实就是长整型 = long 可以省去int,在标准中规定 int至少和short一样长,long至少和int一样长。
浮点型 | 字节 | 精度 | 占位 |
float | 4 | 6位小数 | %f |
double | 8 | 15位小数 | %lf |
long double | 8 | 19位小数 | %Lf |
C 布尔bool
C99标准以前,C语言里面是没有bool,C++里面才有,C99标准里面定义了bool类型,需要引入头文件stdbool.h
bool类型有只有两个值:true =1 、false=0。因此实际上bool就是一个int所以在c/c++中 if 遵循一个规则, 非0为true,非空为true;NULL 其实也就是被define为了 0。
printf输出打印,类似Java system.out.println("")。
格式化String.format("%d",xx)
在C中//常用 sprintf 来格式化字符串,举个例子:
char str[100];
for (size_t i = 0; i < 3; i++)
{
//讲 2、3参数 格式化的 字符 复制到 str 中
sprintf(str, "C:/Users/Administrator/Desktop/临时文件/%d.txt", i);
// \n 换行
printf("%s\n", str);
}
输出结果:
数组声明
c当中 定义数组 必须指明数组长度 或者 声明与赋值写在一起,连续的内存 int=4*6 = 24 字节 栈内存。声明数组:
//java
int[] var
//C 必须声明时候确定大小
int var[10]
//大小
printf("%d",sizeof(var)/sizeof(int));
1.栈内存限制 linux:ulimit -a 查看
2. 但是直接分配这么大不行,因为堆栈可能保存参数,返回地址等等信息。
动态内存申请
malloc
没有初始化内存的内容,一般调用函数memset来初始化这部分的内存空间。当数据无法确定 或者 比较庞大 需要使用动态内存申请 在堆中:
int *di1 = (int*)malloc(1 * 1024 * 1024);
动态申请内存应该紧跟 memset 初始化内存
memset(di1, 0, 1 * 1024 * 1024);
将di1指向的内存 初始化为0,长度为1 * 1024 * 1024。
对malloc申请的内存进行大小的调整
realloc(di1, 20 * sizeof(int));
申请内存并将内存初始化为 null(null就是 0)
int *di2 = (int*)calloc(10, sizeof(int));
等同于:
int *ii2 = (int*)malloc(sizeof(int)*10);
memset(ii2, 0, sizeof(int)*10);
free 将指针置为 null,eg:
if (di1) {
free(di1);
di1 = 0;
}
if (di2) {
free(di2);
di2 = 0;
}
system("pause");
return 0;
C面向过程,C++面向对象编程。