C语言基础
文章平均质量分 65
全是C语言的基础,学习笔记
WanLiang Li
求知若饥,虚心若愚!
电子科学与技术
展开
-
typedef关键字
**typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。使用typedef目的一般有两个,一个是给变量一个容易记并且意义明确的新名字,另一个是简化一些比较复杂的类声明。在单片机开发中需要配置一些寄存器,(8位、16位、32位),在这里typedef可以简化名字。比如typedef unsigned char u_int8; //8位无符号数typedef unsigned short int原创 2021-04-05 12:40:20 · 637 阅读 · 0 评论 -
计算结构体的大小
结构体用来保存不用类型的数据非常方便,但是计算结构体的大小并不是将变量所占的字节数相加,而是按照一定的对齐规则进行计算结构体的大小的。由于地址对齐的原因,结构体大小的计算必须满足两条原则:**一、结构体每一个成员相对于结构体首地址的偏移量必须是成员大小的整数倍(0被认为是任何数的整数倍)**二、结构体的总大小必须是所有成员大小的整数倍(数组成员除外,结构体成员除外)下面通过代码来验证1、一般的结构体#include<stdio.h>#include<stdlib.h>原创 2021-04-05 01:13:10 · 266 阅读 · 0 评论 -
结构体指针、函数封装、字符串的结合
所谓结构体指针就是指向结构体变量的指针,一个结构体变量的起始地址就是这个结构体变量的指针,如果把一个结构体变量的起始地址存放在一个指针变量中,那么这个指针变量就指向该结构体变量。struct Student* pstu就定义了一个结构体指针,和整型的指针变量都差不多,pstu为结构体指针变量,用来存放结构体地址的变量,需要注意的是结构体指针是用“->”运算符来访问结构体中的成员,普通结构体变量访问成员是用“.”来访问。结构体指针的具体用法如下代码:#include<stdio.h>原创 2021-04-04 18:34:00 · 222 阅读 · 0 评论 -
结构体数组
一个结构体变量中可以存放一组有关联的数据,(如一个学生的名字,成绩),那如果有10个学生该怎么办呢?显然就要用数组,因为数组是存放同一类型的数据,这里的数组类型为结构体,所以称为结构体数组。结构体数组和整型数组都差不多,不同的地方就在于每个数组元素都是一个结构体类型的数据,它们都有各自的成员项。下面用一段代码来说明结构体数组的定义和引用:#include <stdio.h>#include <string.h>#include<stdlib.h>struct原创 2021-04-04 17:50:18 · 5185 阅读 · 0 评论 -
结构体的定义
1、结构体的定义在前面程序中,所用到的变量大多数都是相互独立的,没有内在联系,比如 int a; char c;都是相互独立的,但是有些情况需要把一些变量组合一起,比如,一个学生的名字,成绩,分数,学号等,都是不一样的数据类型,但是属于一个学生,如果定义了这些变量,他们也是相互独立的,不能反映这些变量的内在联系,有时候希望把这些属于一个人的数据组成一个组合数据。数组也可以同时存放一组数据,那为什么数组不能存放这些数据呢?因为数组只能存放同一类型的数据,不能存放不同内型的数据,比如不能同时存放一个人的名字原创 2021-04-04 17:19:41 · 3452 阅读 · 0 评论 -
自己封装字符串函数
1、putsvoid myPuts(char* p){ if(*p != '\0'){ printf("%s",p); } putchar('\n');}void myPuts(char* p){ while(*p != '\0'){ putchar(*p++); } putchar('\n');}2、getsint myGets(char* p){ int cnt = 0; //用来计数输原创 2021-04-03 16:43:32 · 210 阅读 · 0 评论 -
字符串操作常用函数
字符串常用函数有如下puts() //输出字符串gets() //获取字符串strlen() //计算字符串长度memset() //初始化strcpy() strncpy() //字符串的拷贝strcat() //字符串的拼接strcmp() //字符串的比较strchr() //字符串的查找strstr() strtok() //字符串分割strlwr() //字符串转为小写strupr() //字符串原创 2021-04-01 14:10:08 · 7926 阅读 · 0 评论 -
字符数组和字符串以及strlen函数
一、字符数组字符数组的定义方法字符数组是由于若干个数组元素组成的1、字符数组的定义可以类比于整型数组,定义整数数组为 int array[3] = {1,2,3};那么定义字符数组为char string[3] = {’ a ‘,’ s ',‘ f ’},这就是定义字符数组的第一种方法。2、定义字符数组的第二种方法为 char string[3] = “asdf”,对于遍历字符数组用占位符%c,输出也是一个一个的输出,示例代码如下#include<stdio.h>#include原创 2021-03-31 13:54:04 · 1849 阅读 · 0 评论 -
malloc函数,内存泄漏以及野指针
一、malloc函数C 语言库函数malloc原型为 void malloc(size_t size),返回一个类型为void的指针,用于申请一块连续的指定大小的内存块区域以void类型返回申请的内存地址,如果申请空间失败,返回为NULL 、malloc函数在头文件stdlib.h里面,一般将malloc函数和free函数一起使用,因为在Windows下面系统不会自动回收malloc开辟的空间,要free函数进行释放空间,在Linux下malloc在程序结束后,系统会回收这个空间。示例代码#原创 2021-03-29 14:29:22 · 851 阅读 · 0 评论 -
函数指针和指针函数
一、函数指针函数指针,函数的指针,也就说是一个指针,存放的是函数地址1、如何定义一个函数指针呢?a : 表示一个指针:*b : 函数的标志:()c : 函数指针是专用的,格式要求很强(参数类型,个数,返回值)void (*p)() ;就定义了一个函数指针,void表示函数的返回类型,2、如何给函数指针赋值呢?p = hello;就表示给函数指针p赋值了,add表示函数名,函数名就是地址,就像数组一样,数组名就是地址3、如何通过函数指针调用函数?a:p(); 直接通个指针名字加()调用b原创 2021-03-29 11:58:07 · 266 阅读 · 0 评论 -
指针数组和数组指针
1、指针数组由名字就可以知道,指针数组就是指针的数组,表示有一个数组存放多个指针,那么怎样定义一个指针数组呢?int array[3] 表示多个整数,叫整型数数组,int* parray[3] 表示多个指针,叫做指针数组,数组中的每一项元素都是指针变量,指针变量就是存放地址的变量。示例代码如下#include<stdio.h>#include<stdlib.h>int main(){ int a = 1; int b = 2; int c =原创 2021-03-29 10:04:29 · 187 阅读 · 1 评论 -
C语言数组在函数中的传参
在c语言中有时需要数组作为函数的参数进行传参,那么应该怎样传递呢?先看一下整数作为函数参数时的传参#include <stdio.h>#include <stdlib.h>int Add(int a,int b){ int c; c = a + b; return c;}int main(){ int a = 1; int b = 2; printf("%d",Add(a,b)); system("pause"); return 0;原创 2021-03-26 09:55:31 · 11474 阅读 · 2 评论 -
C语言链表的定义、遍历、增删改查、以及动态创建链表的头插法和尾插法
一、数组和链表1、什么是链表链表是一种常见的重要的数据结构,是一种存放数据的思想,它是动态地进行存储分配的一种结构,当我们用数组存放数据时必须事先定义固定的数组长度(元素个数),并且容易浪费空间,比如在不知道元素个数时,就必须把数组定义得足够大,以便能存下数据,显然这样非常浪费内存。链表就没有这种缺点,它根据需要来开辟空间。2、链表和数组的区别首先定义一个数组 int array[10],array[0]存放1、array[1]存放2,依次存放到array[9] = 10可以看到数组存放数据都是原创 2021-03-04 00:01:09 · 927 阅读 · 0 评论 -
C语言为什么要用指针?
本来可以用变量名来访问变量,那为什么还要用指针呢?是不是找麻烦呢? 将从以下两点解释为什么要用指针一、指针可以向指定的地址赋值首先看一段代码#include<stdio.h>#include<stdlib.h>int main(){ int data = 10; printf("data的地址=%p\ndata = %d\n",&data,data); system("pause"); return 0;}原创 2021-01-17 17:04:34 · 2580 阅读 · 1 评论