数据类型
1、浮点型
浮点型有时候会出现错误,因为精度问题引起的
float num=23.5;
//修改后
float num=23.5f;
这样就可以解决报错问题。
2、定义变量
所有变量都要定义在最前面,括号{}外的为全局变量,内部为局部变量且优先级高。
int main()
{
float num=0;
int num1 = 0;
int num2 = 0;//放在最前面
scanf_s("%d%d", &num1, &num2);
num = num1 + num2;
printf("%0.3f\n",num);
}
3、全局变量作用于整个工程
两个头文件(.c)在一个工程里,那全局变量可以通用。只需要加个extern说明来自另一个头文件。
extern int g_val;
4、字符串数组
字符串内部有一个隐藏的“\0”,以字符形式放时需要在最后加上。
int main()
{
const int n = 10;//const表示常变量,n还是属于变量。
char arr1[] = "abc";
char arr2[] = { 'a','b','c' };
char arr3[] = { 'a','b','c','\0'};
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("%s\n", arr3);
return 0;
}
5、原码、反码、补码
负数在储存中储存的是二进制的补码
源码:11110000
反码:10001111(原码除最高位保持不变其他取反)
补码:10010000(反码加一)
函数
1、scanf_s()的前身——scanf()
有的教材里用的scanf(),其实在目前Visual Studio版本中已经弃用了,用scanf_s()函数代替了。scanf_s() 的功能虽然与scanf() 相同,但却比 scanf() 安全,因为 scanf_s() 是针对“ scanf()在读取字符串时不检查边界,可能会造成内存泄露”这个问题设计的。
ps:这个函数在其他IDE中没有,所以注意使用场合。
如果想忽略这个警告可以在最开始加#define _CRT_SECURE_NO_WARNINGS 1
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
void main()
{
char buffer[128];
printf("Please input a string:\n");
scanf_s("%s" , buffer,128);
/* 这里必须要有128,以表明最多读取128个字符,如果写成scanf_s("%s",buffer),程序将无法执行到底,
且编译器会提示“Unhandled exception at 0xfefefefe in array.exe:0xC0000005: Access tion.” 。
当然在安全性要求不高的情况下,不一定非要用scanf_s()函数,可用scanf("%s",buffer)代替。 */
printf("%d in your string.\n",buffer);
system("pause");
}
不想每次都敲这个可以在路径C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\VC\vcprojectitems\newc++file.cpp,这个文件内添加自己想要的开头内容
/************************************************************************************
*项目名:
*创建时间:2021/xx/xx
*创建人: XXX
*描述:
*===================================================================================
*修改标记
*修改时间:2021/xx/xx
*修改人: XXX
*描述:
************************************************************************************/
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
return 0;
}
2、转义字符
除了常见的转义字符【\n,\t,\v】等,需要注意“\”后面跟三个数字会变成ASCLL码相应的字符。
3、判断语句
exp1 ? exp2 :exp3
如果exp1为真,则取exp2,否则取exp3
4、指针
32位系统有2^32个地址,如果每个地址有一个字节的空间,则内存总大小为4G
int* p = &a;//p就是指针变量
printf("%p\n",&a);
*p = 10;//解引用操作符
5、结构体
struct
struct book
{
char name[20];
short price;
};//注意分号不能省略
//可用typedef来定义名字
//typedef struct book
//{
// char name[20];
// short price;
//}Book;
int main()
{
struct book b1 = { "书名",62 };
printf("%s", b1.name);
struct book* pb = &b1;//结构体指针
printf("%s\n", (*pb).name);
printf("%s\n", pb->name);
return 0;
}
使用时最好是传地址,节省栈的空间提高新能。