在说C之前,我们要明确一个观念——算法,即解决问题的思路和方法。C作为一门语言,它和算法是密不可分的。

我们学习程序设计就是学习语言和算法,算法是灵魂,怎么样构造一个算法是重中之重!算法先不说涉及,下面说一些 C语言的基础知识。


一、如何写C代码?怎样创建?命名?

1、创建工程:(Visual C++ 2010是我们所使用的学习工具,以此为例

visual c++ → 点击空项目

(注意两个问题:①命名:例text_3_5,不要用中文 ②路径问题:建议建立单独的路径,方便查找源代码)

2、创建工程:

源代码(右击)→ 新建项目 → C++文件 → 命名为text_3_5.c(不是text_3_5.cpp,这是c++文件)

.c源文件、.h头文件

3、写代码


#define _CRT_SECURE_NO_WARNINGS 
//警告失效(vs自带sacanf_s不可移植,其他平台不能使用)
//在源文件第一行加上这句话
//默认的创建的文件加上这句话:路径安装C的文件夹中找到VC\vcprojectitems\newc++file.cpp(右击记事本打开,加上#define _CRT_SECURE_NO_WARNINGS)

#include <stdio.h>
//包含一个stdio.h文件,std标准-standard input output,在调用C的库函数的时候,以此声明

int main()
//int是整型 main前面int表示main函数调用,返回一个整型值
//mian主函数,一个程序的入口,有且只有一个

{
printf("hello\n");
//输出函数,C语言本身提供的
return 0;
//程序运行之后返还一个整型0,前后呼应
}

PS:1、要是运行(ctrl+fn+F5)之后看不到结果,设置一下:目标文件 →属性 →链接器 →系统 →子系统 →控制台,之后运行会出现结果。

二、数据类型(向内存申请空间并创建变量

                 sizeof查询申请空间大小(字节)
char 1
short 2
int 4
long 4/8
long long 8
float 4
double 8

代码如下:

#include <stdio.h>
int main()
{
printf("%d\n",sizeof(char));//char类型向内存申请了多大的空间
printf("%d\n",sizeof(short));//.............
printf("%d\n",sizeof(int));
printf("%d\n",sizeof(long));
printf("%d\n",sizeof(long long));
printf("%d\n",sizeof(float));
printf("%d\n",sizeof(double));
return 0;
}

char类型说明

#include <stdio.h>

int main()
{
char ch = ‘’;//向内存申请空间,命名为ch,把a放入ch中,'a'代表一个字符 (占一个字节)
printf("%c\n",ch);
return 0
}

思考:为什么有这么多类型?

解:不同类型的字节占据的空间不同,选择合适的类型,利于减少内存消耗。

PS:补充知识:

字节(byte)

计算机最小的单位bite——为一个二进制,只能存放一个1\0

8个bite(例:10110011)=1个byte

二进制与十进制

例二-十:0010二进制=0*2³+0*2²+0*2¹+0*2º=2十进制;同理:111二进制=7十进制;

例十-二:111十进制=64+32+8+4+2+1=1*2∧6+1*2∧5+0*2∧4+1*2∧3+1*2∧2+1*2∧1+1*2∧0                     =01101111二进制

三、变量/常量

变量

1、变量的分类

局部变量:代码块{ }之内

全局变量:代码块{ }之外

#include <stdio.h>
int num = 2;
int main()
{
int num = 3;
printf("num=%d\n",num);
return 0;
}//结果num=3,注意,当局部变量和全局变量相同时,局部变量优先!但是容易产生

2、变量的作用域

局部变量的作用域是其代码块

全局变量的作用域是整个项目,一个项目有多个.c文件,extern(重定义),同一变量在不同文件中的引用

常量

1、字面常量(直接写出来的数值)

2、常变量const(含有常属性,本质上还是个变量,但是不能再被赋值

#include <stdio.h>
int main()
{
int num = 3;
printf("%d\n",num);
num = 8;
printf("%d\n",num);
return 0;
}//结果为3 8

#include <stdio.h>
int main()
{
const int num = 3;
printf("%d\n",num);
num = 8;
printf("%d\n",num);
return 0;
}//结果会报错,左值被const固定为4,4=8不可取

const修饰(n任然是变量)

#include <stdio.h>
int main()
{
int n = 10;
int arr[n] = {0};
return 0;
}//会报错,[]之中必须是常量

#include <stdio.h>
int main()
{
int n = 10;
int arr[n] = {0};
return 0;
}//同样会报错

#include <stdio.h>
int main()
{
int arr[10] = {0};
return 0;
}//ok

3、标识符常量(作为常量,可用于数组)

#include <stdio.h>
#define Max 10

int main()
{
int arr[Max] = {0};
printf("%d\n",Max);
return 0;
}//数组可用,输出为10,注意define的使用方法与位置!

4、枚举常量(enum,每个枚举常量都有自己的固定的数值,不可改)

#include <stdio.h>

enum sex
{
MALE,
FEMALE,
SECRET
};

int main()
{
printf("%d\n",MALE);
printf("%d\n",FEMALE);
printf("%d\n",SECRET);
return 0;
}//输出为 0 1 2,注意enum的使用方法与位置!

5、字符串类型(由“ ”引起的一串字符)

⑴“hello world”      ⑵ “ ”空字符​

例:字符串  “abc”

#include <stdio.h>
int main()
{
char arr1[]="abc";//字符串默认放一个/0,结束标识
printf("%s\n",arr1);
return 0;
}//结果为abc

#include <stdio.h>
int main()
{
char arr1[]={'a','b','c',0};
printf("%s\n",arr1);
return 0;
}//结果为abc

#include <stdio.h>
int main()
{
char arr1[]={'a','b','c'};
printf("%s\n",arr1);
return 0;
}//结果为abc+乱码直到找到0停止

PS: ASCII表

初学C语言——基本知识_#include

例:计算字符串 “abc”的长度

#include <stdio.h>
#include <string.h>//引用头文件

int main()
{
char arr1[]={'a','b','c',0};
char arr2[]={'a','b','c'};

printf("%d\n",strlen(arr1));
printf("%d\n",strlen(arr2));
return 0;
}//结果:3 随机数(最后要找到0)
//0不算作字符的长度

总结

1.写c的基本步骤

2.数据类型

7个类型,各自占据空间

二进制与十进制的转换


3.常量与变量

变量

常量5种(字符串、枚举、标识符、const常变量、常量)

结语:如有错误之处及不恰之处,尽请斧正■▁■