在说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表

例:计算字符串 “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常变量、常量)
结语:如有错误之处及不恰之处,尽请斧正■▁■