为了使用C语言手撕数据结构,我们应首先对C语言有所了解,以下是博主挑的比较重要的一些知识点,相信对C语言基础不够好的童鞋有所帮助。
 
1. Hello World程序
#include <stdio.h>
void main(){
	//这是一个输出“Hello World!”的程序
    printf("Hello World!");
    /*运行结果为"Hello World!"*/
}
 
以上为使用C语言实现Hellow World的代码,其中
a)#include <stdio.h>中#include为预处理指令,用以引用用户和系统头文件
 b)<stdio.h>中包括了一些预定义的宏(可以理解为一些规则,从库中可以调用已经定义好的这些规则)和函数(如printf()就是stdio.h库中已经定义好的一个显示函数,用于显示""中的文字)
 c)C语言中每一个语句后都以;(英文分号结尾)
 d)可用//和/**/进行注释
2. 选择(判断)
#include <stdio.h>
void main(){
    int a,b;
    a=1,b=2;
    if(a>b){
        printf("%d\n",a);
    }else{
        printf("%d\n",b);
    }
}
 
以上代码用于实现判断,以输出a与b中的较大值,最终运行结果为2。
以上代码功能可以用宏来实现:
#include <stdio.h>
#define Max(a,b) (a>b)?a:b
void main(){
    int a,b;
    a=1,b=2;
    printf("%d\n",Max(a,b));
}
 
运行结果当然还是2,但是要更简洁些,其中(a>b)?a:b表示如果a大于b的话结果为a,否则结果为b。
选择语句中经常会用到switch()语句,以避免多个if else语句的出现,使用例子如下(两版代码效果一致):
 if else版:
#include <stdio.h>
void main(){
    int a;
    printf("请输入a的值:");
    scanf("%d",&a);//C语言中'&'表示取地址,这里表示读取输入的值
    if (a==1){
        printf("a==1\n");
    }else if(a==2){
        printf("a==2\n");
    }else if(a==3){
        printf("a==3\n");
    }else if(a==4){
        printf("a==4\n");
    }else if(a==5){
        printf("a==5\n");
    }else{
        printf("a!=1-5中的任何一个数!\n");
    }
}
 
switch版:
#include <stdio.h>
void main(){
    int a;
    printf("请输入a的值:");
    scanf("%d",&a);//C语言中'&'表示取地址,这里表示读取输入的值
    switch(a){
    case 1:
        printf("a==1\n");
        break;
    case 2:
        printf("a==2\n");
        break;
    case 3:
        printf("a==3\n");
        break;
    case 4:
        printf("a==4\n");
        break;
    case 5:
        printf("a==5\n");
        break;
    default:
        printf("a!=1-5中的任何一个数!\n");
        break;
    }
}
 
3. 循环
for 循环
for循环的主要使用方法为for(初始值;循环条件/*满足条件就循环*/;i累加){循环体},示例代码如下:
#include <stdio.h>
void main(){
    int i;
    for(i=0;i<10;i++){
        printf("%d\n",i);
    }
}
 
while 循环
while循环的主要使用方法为while(循环条件/*满足条件就循环*/){循环体},示例代码如下:
#include <stdio.h>
void main(){
    int i;
    i=0;
    while(i<10){
        printf("%d\n",i);
        i++;
    }
}
 
循环中如果需要跳出循环,可以使用break;如果什么都不需要做,可以使用continue,这里不再示例。
4. 数组
数组数据结构是同一类型数据的组合,这些数据在内存中是连续存储的。
 
 如上图所示,我们可以将这个长方形理解为数组,框框下面的数字为坐标,即:C语言中数组的坐标是从0开始计数的。以上数组中我们访问元素会非常方便,但是如果我们想从中删掉或增加一个元素却非常不方便,这个问题我们将会在后面细讲。
数组的示例代码如下:
#include <stdio.h>
void main(){
    int arr[10]={1,2,3,4,5,6,7,8,9,10};
    int i;
    for(i=0;i<10;i++){
        printf("arr[%d]=%d\n",i,arr[i]);
    }
}
 
代码的运行结果为:
arr[0]=1
arr[1]=2
arr[2]=3
arr[3]=4
arr[4]=5
arr[5]=6
arr[6]=7
arr[7]=8
arr[8]=9
arr[9]=10
 
5. 指针
指针和我们在代码中使用的变量一样——都是变量,只不过指针用来存储内存地址。举一个可能不恰当的例子:
 妈妈我要吃饭,
 饭在碗里。
我们向妈妈要饭吃,但是妈妈并没有直接给我们饭,但告诉了我们饭在碗里,这里碗就充当指针的作用。
同理,我们在进行coding的时候,需要访问变量的时候不是直接去访问变量,而是先访问存储变量的地址,再通过地址来获取变量的值):
#include <stdio.h>
void main(){
    int num=8;
    int *p; //申明整型指针变量
    p=#//将a的地址存到指针p中
    printf("num 的存放地址:%p\n",p);
    printf("地址%p中存放的值为: %d\n",p,*p);
    int arr[3]={1,2,3};
    p=arr;
    printf("地址 %d 中存放的值为: %d\n",p,*p);
    p++;
    printf("地址 %d 中存放的值为: %d\n",p,*p);
    printf("地址 %d 中存放的值为: %d\n",p+1,*(p+1));
}
 
以上代码的执行结果为:
num 的存放地址:0060FEF8
地址0060FEF8中存放的值为: 8
地址 6356716 中存放的值为: 1
地址 6356720 中存放的值为: 2
地址 6356724 中存放的值为: 3
 
从中我们可以看出:
 a)通过指针可以存放内存地址,通过内存地址可以访问出内存中存放的值即变量的值
 b)int(整型)占4个字节
 c)整型中的++运算和+1运算都是增加一个整型(4个字节)
 d)数组中数组名就是数组的首地址(第0号元素所在地址)
6. 结构体
结构体是一种自定义的数据类型,它允许不同类型的变量一起存放,这不同于数组。
结构体的定义形式为
struct 结构体名{
	type 变量1;
	type 变量2;
	...
};
 
结构体的示例代码如下:
#include <stdio.h>
struct student{
    int id;
    char name[20];
    int phone;
    char address[40];
};
void main(){
    struct student st1,st2;
    /*初始化st1的信息*/
    st1.id=2020001;
    st1.phone=10086;
    strcpy(st1.name,"孙悟空");
    strcpy(st1.address,"花果山水帘洞");
    /*初始化st2的信息*/
    st2.id=2020002;
    st2.phone=10000;
    strcpy(st2.name,"猪八戒");
    strcpy(st2.address,"乌斯藏高老庄");
    /*输出学生st1的信息*/
    print_stu(st1);
    /*输出学生st1的信息*/
    print_stu(st2);
}
void print_stu(struct student st){
    printf("学号:%d\n",st.id);
    printf("姓名:%s\n",st.name);
    printf("电话:%d\n",st.phone);
    printf("地址:%s\n",st.address);
}
 
以上代码的运行结果为:
学号:2020001
姓名:孙悟空
电话:10086
地址:花果山水帘洞
学号:2020002
姓名:猪八戒
电话:10000
地址:乌斯藏高老庄
 
才疏学浅,难免有错误和不当之处,欢迎交流批评指正!
 同时有问题的话欢迎留言或邮箱联系(ljt_IT@163.com)。

                  
                  
                  
                  
                            
      
          
                
                
                
                
              
                
                
                
                
                
              
                
                
              
            
                  
					5万+
					
被折叠的  条评论
		 为什么被折叠?
		 
		 
		
    
  
    
  
            


            