【C语言】1.初始C语言

1.C语言是一门计算机语言(人和计算机交流的语言),C、C++、JAVA、Python等都是计算机语言。
2.语言的发展,最初是二进制语言,即0和1,因为计算机硬件的基础是电,而电平只有正电和负电只分,即0和1,这时会编程的人是科学家。
3.譬如用10100001表示ADD,像ADD这样的符号叫做助记符,用助记符表达的语言叫做汇编语言,再往后发展就是B语言,C语言,C++等。就好像照相机一样,最初人们要去照相馆找专门的照相师傅才能照相,随着社会的发展,有了数码相机,手机,人人都会照相,门槛越来越低了,使用的人也越来越多了。
4.C语言早起不是很成熟,逐渐变得成熟,流行。由于各家都在C语言上做优化,导致各个机构的C语言不统一,于是有了一个国际标准C89/C90,甚至后面的C99,C11,但是由于C99和C11并没有流行起来,导致很多编译器都不支持C99和C11。这样的统一导致C语言在很多编译器上都可以进行编译,也便于交流和流行。
5.写C代码,良好的习惯是创建工程。一般会有.c文件(源文件)和.h文件(头文件)
6.第一个C文件

#include <stdio.h>//stdio.h是C语言本身提供给我们的库函数,想要调用库函数需要用#include <xxx.h>这样的方式
//stdio的意思是,std-标准  standard input output
int main() //主函数-程序的入口-有且只有一个
//main前面的int表示main函数调用返回一个整数值
//以前的教材也有void maiin()这样的写法,但这样的写法已经过时了,不要再用了
{
    
    
  printf("hello world\n");//在屏幕上输出hello world并换行
  //\n是换行的意思
  return 0;//返回0
}

7.数据类型
char //字符数据类型
short //短整型
int //整型
long //长整型
long //更长的整型
float //单精度浮点数
double //双精度浮点数

//%c 打印字符格式的数据 
//%d 打印整型十进制的数据 
//%f 打印浮点型的数据,小数
//%p 以地址的形式打印
//%x 打印16进制的数字
//%x 打印8进制的数字
#include <stdio.h>
int main() 
{
    
    
	char ch ='A' ;// 向内存申请一块空间来存放字符A,而ch是一种字符类型,同时也是这块空间的名字
	printf("%c\n",ch);//%c 打印字符格式的数据 
  	return 0;//返回0
}

分析每种数据类型所占空间内存的大小

#include <stdio.h>
int main() 
{
    
    
	printf("char所占的内存大小为 %d\n",sizeof(char));//1个字节,8个位
	printf("short所占的内存大小为%d\n",sizeof(short));//2个字节,16个位
	printf("int所占的内存大小为%d\n",sizeof(int));//4个字节,32个位
	printf("long所占的内存大小为%d\n",sizeof(long));//4个字节或者8个字节
	printf("long long所占的内存大小为%d\n",sizeof(long long));//8个字节,64个位
	printf("float所占的内存大小为%d\n",sizeof(float));//4个字节,32个位
	printf("double所占的内存大小为%d\n",sizeof(double));//8个字节,64个位
  	return 0;//返回0
}

为什么long可能是4个字节,也可能是8个字节。因为C语言标准规定只需要sizeof(long)>=sizeof(int)即可,而int占4个字节,所以long占4或者8个字节都符合标准,所以在不同的编译器下可能出现不一样的结果,但都是满足标准的。

从上面就可以知道
short 所能表示的数字大小为0—22^16-1,即0—65535;
int所能表示的数字大小为0—2
2^32-1,即0—65535;

全局变量和局部变量

#include <stdio.h>
int num1=10;//全局变量
int main() 
{
    
    
int num2=20;//局部变量
  	return 0;
}

上面代码里面的变量num1属于全局变量,定义在代码块{}之外的变量;而num2属于局部变量,定义在代码块{}之内的变量。
局部变量和全局变量的名字建议不要相同,容易误会,产生bug,当局部变量和全局变量的名字相同的时候,局部变量优先。

#include <stdio.h>
int a=10;//全局变量
int main() 
{
    
    
	int a=20;//局部变量
	printf("%d\n",a);
	return 0;
}
//输出为20,说明局部变量优先级更高

变量的使用,输入以及输出

#include <stdio.h>
int main() 
{
    
    
#include <stdio.h>
int main() 
{
    
    
	//C语言语法规定,变量要定义在当前代码的最前面 
	//计算两个数的和 
	int num1=0;
	int num2=0;
	int sum=0;
	//输入函数
	scanf("%d%d",&num1,&num2); //取地址符号&
	sum=num1+num2;
	printf("sum=%d\n",sum); 
	return 0;
}
}

变量的作用域以及生命周期
1.局部变量的作用域是变量所在的局部范围
2.全局变量的作用域是整个工程

正确
错误

extern关键字,用来申明外部符号,可以在一个源文件里面调用另外一个源文件里面的变量。

//sum.c
int num=100
//main.c
int main()
{
    
    
extern int  num;
printf("num=%d\n",num);//打印num=100
return 0;
}

生命周期:变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段。
1.局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束
2.全局变量的生命周期是:整个程序的生命周期

图一
图二

常量:
1.字面常量
2.const修饰的常变量,该变量的值无法改变

图一
图二

3.#define定义的标识符常量

4.枚举常量
枚举关键字:enum

#include <stdio.h>
enum Sex
{
    
    
	MALE,
	FEMALE,
	SECRET	
};
//MALE,FEMALE,SECRET-枚举常量 
int main() 
{
    
    
	printf("%d\n",MALE);//0 
	printf("%d\n",FEMALE);//1 
	printf("%d\n",SECRET);//2 
	return 0;
}

5.字符串+转义字符+注释
由双引号引起来的一串字符称为字符串字面值,或者简称字符串。
注意:字符串的结束标志是一个'\0'的转义字符,在计算字符串长度的时候'\0'是结束标志,不算作字符串的内容。

"abcdefg";
"hello bit";
"";//空字符串 

问题:如果想要把字符串"abc"存起来,应该放在哪里呢。
字符串后面默认带有'\0',这是字符串的结束标志。

#include <stdio.h>
int main() 
{
    
    
	char a1[]={
    
    "abc"};//数组 
	//"abc"---'a''b''c''\0'--'\0'字符串的结束标志 
	char a2[]={
    
    'a','b','c','\0'};
	printf("%s\n",a1);
	printf("%s\n",a2);
	return 0;
}
#include <stdio.h>
#include <cstring>
int main() 
{
    
    
	char a1[]={
    
    "abc"};//数组 
	//"abc"---'a''b''c''\0'--'\0'字符串的结束标志 
	char a2[]={
    
    'a','b','c','\0'};
	char a3[]={
    
    'a','b','c'};
	printf("%d\n",strlen(a1));//strlen--计算字符串长度的 
	printf("%d\n",strlen(a2));
	printf("%d\n",strlen(a3));
	return 0;
}

转义字符'\n'的演示

#include <stdio.h>
int main() 
{
    
    
	printf("abcn");//打印出来是abcn 
	printf("abc\n");//打印出来是abc+换行 
	return 0;
}

常用的字符串

转义字符 释义
\? 在书写连续多个问号时使用,防止他们被解析成三字母词
\’ 用于表示字符常量’
\" 用于表示一个字符串内部的双引号
\\ 用于表示一个反斜杠,防止它被解释为一个转义序列符
\a 警告字符,蜂鸣
\b 退格符
\f 进纸符
\n 换行符
\r 回车符
\t 水平制表符
\v 垂直制表符
\ddd ddd表示 1~3个八进制的数字。如:\130 X
\xdd dd表示2个十进制的数字。如:\x30 0
#include <stdio.h>
#include <string.h>
int main() 
{
    
    
	printf("%d\n",strlen("c:\test\32\test.c"));//计算后面字符串的长度
	return 0;
}
//答案:13
//答案解析,\t 是一个字符;\32也是一个字符,表示的是作为8进制代表的那个10进制数字,作为ASCII码值,对应的字符。即将8进制的32转换为10进制为3*8+2=26。通过查表可知ASCII表中26表示的是→
//"c:\test\32\test.c"变成了
//c
//:
//\t---横向制表
//e
//s
//t
//\32---查ASCII表,可知打印出来是→
//\t
//e
//s
//t
//.
//c
//所以字符串长度一共是13

猜你喜欢

转载自blog.csdn.net/wsq_666/article/details/114271223