c语言入门

tags: C

十秒钟入门

今天我们来了解一下c,那么问题来了:什么是C呢?
我不会告诉你一段文字,我只会说下面就是C

#include <stdio.h>

int main() {
    //这是一行注释,就是不会被执行,用来作为提示信息的
    /*
    这是多行注释
    你可以添加你的代码了,当然不是在注释里面。
    */
    return 0;
}

看到了吧!头文件,主函数,如果你是刚开始了解C,那么你写的程序大致就是这个样子。如果你会写这几行,那么恭喜你了,你将有可能是一个好的程序猿。
但是事情远没有这么简单,你可以把这理解成一个模板。但是要实现功能该怎么编写呢?还是不会,不要着急,看下面。

轻松一分钟

c语言,就像我们说的汉语,英语一样,我们可以说各种各样的话,于是我们就能编写各种各样的程序。程序就是我们说的’话’,不过是说给机器听的。

就像汉语有数字和字母一样,c也有自己的称为“基础类型”的东西。
如果你是一个整数数字,那么就称为:int, short, long
如果是一个小数,就称为:float, double
如果是一个字母,就称为:char

如果你这些都知道了,再知道一点点那么现在你可以干好多事情了。那一点点就是:名字。
什么名字呢?变量名,那么问题来了,什么是变量?

int a;

a就是一个整形变量,a就是这个变量的名字。如果还不能理解,想想汉语中的名词,人们喜欢说各种名词,比如桃花,大人会指着一个很好看的东西,告诉你说这是桃花。这里的桃花,就是变量名,桃花指代的东西就是变量,其实都是一回事情啦!

现在可以干什么呢?
声明和定义变量;

声明就是你告诉系统你要保存一个变量,比如:
int a;
char b;
注意: c中每一句都以;结束,不要忘啦!

定义是什么呢?

int a;
a = 2; //这就是定义

还可以写一起: int a = 2; //大人都这么写,哈哈哈

单个字符是以''圈起来的,看下面:
`char a = ‘d’;
是不是很简单,如果感觉很难的话,那么恭喜你了,你得加油了。

进阶一分钟

上面我们看到了,声明一个变量,那么如果想申明多个变量该怎么办呢?
数组(同种类型的多个变量的集合)为此而生了。

int a[10]; //10表示声明了十个变量
a[0] = 1;  //对第一个变量操作
a[1] = 2;
...
a[9] = 9;
int a[] = {1, 2, 3}; //数组大小只有三个

你可以向上面一样声明变量,变量类型,随自己喜好,当然赋值,也要相应的变化。
c语言中数组操作是通过name[x]操作的。x的取值范围为0~x-1,也就是说数组下标的操作是一个半闭半开的区间。如果下标超过了x-1,就称为越界,先知道,这个是错误的就行,不要这样写,否则后果很严重。

现在试着声明自己的数组吧!

挑战10分钟

你可能说难道就这么简单,哈哈哈,当然不是,地球人,你们想的太简单了,哈哈
看下面

先说两个东西:堆,栈
这两个东西,以后会经常碰到。都说的是内存上面的存储空间。如果内存不知道,自己百度。
然后再看:堆相对栈大一点,栈的空间系统帮你维护,堆自己维护
维护是什么意思呢? 就是分配空间,回收空间。

int *p;这是什么,p称为指针。也就是说p可以指向一个int型的变量,当然p也是一种变量。当然也有char* p;等。
那么什么是指向呢?
要知道,每个变量都有自己的一块存储空间,*p就有自己的存储空间。不过这个存储空间里面存储的数据标识了另一块存储空间。如果不明白,继续分析;

int a;
int *p;
有没有发现两声明很像,a是一个int型变量,当然*p也是一个int型变量,那么p是什么呢?可以理解成一个数,这个数指向另一个存储空间,这个空间里面存储着int型的变量。

如果明白了,来看看用法:

int  a = 2;
int *p = &a; //p现在指向了a
*p = 3; // a现在变成了3, p没有变,因为操作的是*p不是p

这就是指针。一级指针,当然还有好多级指针,现在先不着急,后面慢慢学。

注意: 指针不用时,初始化时(如果没有明确的初始化对象)一般都建议赋值为NULL(这是一个系统变量,表明为空)。好处吗,以后就知道了,或者自己百度。

进阶篇之函数

函数: 一个实现特定功能的代码块。可以被别人调用,但是要复合函数定义的标准

int f(int a); 
//这是一个函数的声明,f是函数名,可以换成任何自己喜欢的名字,小括号内为函数的变量,可以有多个,任意类型都行
// f前面的int表示返回值类型,也就是说函数最后必须返回一个int型的变量或者数,如果没有就换成void,不用返回。

int f(int a) { //这是一个函数的实现,用大括号包围
    return a; //a可以换成任何自己喜欢的数字。还可以下一些其他的语句
}

上面就是一个函数,怎么调用? int a = f(2);int b = 2; int a = f(2);或者f(2);

c中有很多库,库中有很多这样的函数,比如输出是printf, 输入时scanf, 等等。
开发的过程就是自己实现函数和调用别人/自己函数去实现特定的功能的过程。

最后再说两个很重要的函数:malloc,free
malloc:用于在堆上面申请一块存储空间,
free:用于释放已申请的存储空间
用法如下:

int *p = (int*)malloc(sizeof(int)*1); // sizeof位一个系统提供的用于获取某个对象占用空间大小的`工具`,1表示申请存放一个int型数据的空间,如果是3就是申请三个,就是数组了

最后一分钟

你可能会发现:如果我想描述一个复杂的东西,比如一本书,该怎么办?因为它有名字,价钱等好多属性,而这些属性来自同一个对象,不可能定义好多变量来保存这些东西,因为如果一本书用两个变量表示,那么我有一百本书呢,两百个变量,估计可能都晕了,如果还没有,那么我有一个图书馆呢,哈哈哈。

c中有个关键字可以用来描述对象
struct
还是看例子:

struct A { //A是对象名,一般建议第一个字母大写
    int a;  //里面可以声明对象的属性
    char b;
    double c;
}; //这个分号一定不能少,不要问我为什么,我只会告诉你两个字,规定

上面就是一个对象的声明,这种格式,里面内容任意换。
可是怎么使用呢?

接上面
struct A st;
st.a = 2;
st.b = 'c';
st.c = 2.3;

struct A *p = (A*)malloc(sizeof(struct st));
p->a = 2;
p->b = 'c';
p->c = 2.3; //注意如果是指针使用`->`,不是则使用`.`操作对象的属性

如果这些都明白了,那么恭喜你了,你学完c呢?事情远没这么简单,
地球人,我还会回来的,哈哈哈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值