初试c语言——先简单了解再深入(1)

初试c语言——通过简单了解方便深入学习

c语言是一门计算机编程语言,广泛应用与底层开发,设计目标是简易的方法编译与处理低级存储器

对计算机硬件不熟等学完再补

第一个c,数据类型,变量与常量

1第一个c的解释

#include<stdio.h>//头文件include:包括        stdio是(1)stan   standard标准,(2) i:键盘输入input,(3)o:屏幕输出output

int main ()//主函数 main是程序的入口

{

printf("hello word\n");

return 0;运行成功为0失败非零

}

2数据类型

char:字符型,一个字节

short:短整型 两个字节

int :整型 四个字节

long:长整型 在64位系统上是8个字节32位是4个字节,标准来说long是4=<long<=8

long long :长长整型 8个字节

float:单精度浮点型 四个字节
double:双精度浮点型 八个字节

指针:八个字节计算机的单位
bit 比特最小
byte 字节=8bit
kb =1024byte2
mb
gb
tb
pb

3变量与常量

(1)变量//创建变量的本质就是向内存申请空间

(一)全局变量与局部变量

在{}里面的是局部变量定义在{}外面的是全局变量

(二)

变量的作用域与生命周期

局部变量的作用域是变量所在的局部范围

全局变量的作用域是整个工程

局部变量的生命周期是进入作用域生命周期开始,离开作用域生命周期结束

全局变量的生命周期是整个程序的生命周期

当两个变量相遇时遵循局部优先

(2)常量

(一)字面常量 :1234

(二)const修饰常变量

const int  a=10;

a= 2;//不能修改会报错

int arr[n]={};//也会报错数组里面是放常量

本质时变量又常量的属性

(三)define定义的标识符常量

#define MAX 100//与全局变量类似但没有类型

(四)枚举常量

等后面细说

字符串 转义字符与注释

1字符串

是由双引号引起的一串字符           ”asd“        字符串的结束标志是\0         %s打印字符串

可以用strlen求(后面细说)

0 数字0
'0' 字符0 ASCII值是48
'\0' 字符 ASCII值是0
EOF :end of file 文件结束标志 值是-1

2转移字符

用\将原本意思转化

一部分:        \'   \"   \n   \0    \\0    \a警告字符  \b退格符   \t水平制表符    \r 回车 \ddd1到3个八进制的数    \xdd 2个十六进制的数

比如第一个\'

是我们想要打印        '但是系统会先识别前面两个''所以用上\

printf("'''");//错误
printf("'\''");
printf("%d\n",strlen("c:\test\628\test.c"));//注意两个地方\t是一个字符,\628是两个字符因为\ddd是八进制数不包含8所以\628是\62与8

写代码时可以留注释方便回忆

选择语句与循环语句

选择:

if  else与switch case

循环

while

do while

for

函数

相当与工厂一样,把原料给他工厂把产品输出

两数求和

数组

一组相同元素的集合

数组从0开始使用

int main
{
    char arr [] = {'q' 'w' 'e'};
    printf("%d\n",strlen(arr));
    return 0;
}//结果是随机值
如果char arr [4]= {'q' 'w' 'e'};此时结果为3不完全初始化剩余部分为0
因为这是字符型'\0'的ASCII值就是0
int n= 10;int arr [n]={};错误因为[]里面放常量

操作符

单目:如前置++

sizeof是单目操作符

后置++
int a=10;
int b=a++;//b=a,a=a+1
printf("%d\n",b);//10
printf("%d\n",a);//11

体力一点强制类型转换

int a=3.14;//错误
int a = (int)3.14//结果是3

双目:加减乘除等在计算过程中结果要看前面类型

如int a=7/2;//结果为3

但是取余操作符两个必须为整数

三目:()?():();

算数操作符

+ - */ %:加减乘除取余

移位操作符

<< 左移         >>右移

逻辑运算符

逻辑与&&,逻辑或||,逻辑非!

位逻辑运算符

位与& 位或| 位取反~ 异或^ 

特殊运算符

(,,,,,);

输出最后一个前面进行运算

函数调用与结构体成员

[] () . ->

关键常见字

用多了就记住了

但是关键字不能创造

auto break case const char continue default do double short signed? else enum static静态的

extern float for goto if int long register寄存器struct union switch sizeof void unsigned volatile

关键字typedef与static

typedef

类型重定义

typedef unsigned int uint;

int main()
{
	unsigned int num = 0;
	uint num2 = 1;
	return 0;
}
static静态的

修饰变量与函数

static修饰局部变量,改变内存位置

变量出作用域之后不销毁,本质是改变了变量的内存位置,影响变量的上生命周期

#include<stdio.h>
void test();
int main()
{
	int i = 0;
	while (i < 10)
	{
		test();
		i++;
	}
	return 0;
}
void test()
{
	int a = 1;
	a++;
	printf("%d", a);
}

结果是十个2

当我们使用static时

#include<stdio.h>
void test();
int main()
{
	int i = 0;
	while (i < 10)
	{
		test();
		i++;
	}
	return 0;
}
void test()
{
	static int a = 1;
	a++;
	printf("%d", a);
}

此时结果为从2到11

static修饰全局变量改变链接属性

当加入ststic会报错

全局变量具有外部链接属性,外部链接属性变成内部链接属性,此时其他源文件(.c)不能再使用

static修饰函数也是改变函数的链接

格外补充register

register寄存器

电脑上的储存设备

寄存器(集成到cpu上)        造价高,空间小,速度快

高速缓存(cache)

内存

硬盘                                        造价低,空间大,速度慢

define定义常量与宏

#include<stdio.h>
#define  MAX 100;
int main ()
{
int arr[MAX]={};//数组[]里面的是常量可以运行说明#define定义常量
return 0;
}

 指针

提到指针首先是内存,内存是电脑上特别重要的储存器,计算机中程序的运行都是在内存中进行,把内存分为一个个小的内存单元,每个单元占一个byte,为了有效地访问到内存单元个每个内存编号,及内存的地址

int * p= &a;//将a的地址放在指针p里面
*p;//解引用通过地址找到内存里面的内容
指针变量的大小
在32位系统中是4个byte在64位系统中是8byte
一个字节8比特位,32位填满是4个字节

 结构体struct

在生活中大部分事务是复杂的,比如书:书名-单价-作者-出版社

所以在c语言中有一种自定义的类型的能力,就是结构体

struct students
{
char name [20];
int age ;
char tele [15];
};
int main()
{
    struct students s = {"zhnagsan",12,"1312831"}//字符串是双引号
    printf("%s %d %s",s.name,s.age s.tele);
}

struct'相当于盖房子的图纸,st是房子,里面的各种类型相当于各个房间

struct students
{
char name [20];
int age ;
char tele [15];
};
void print (struct students * ps)//指针存放s的地址
{
    printf("%s %d %s",*ps.name,*ps.age *ps.tele");
    printf("%s %d %s",ps->name,ps->age ps->tele");//两种都可以
    
int main()
{
    struct students s = {"zhnagsan",12,"1312831"}//字符串是双引号
    printf("%s %d %s",s.name,s.age s.tele");
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值