C语言学习笔记(基础篇)

数据类型

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;
}

使用时最好是传地址,节省栈的空间提高新能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值