C语言学习中个人觉得比较重要的一些点

前言

由于每个人之间可能学习习惯差异较大或水平不同,个人对编程语言的理解力就会不一样,故文章仅供参考

一、c语言库函数的调用

c语言中有各种不同的函数,但当使用时需注意调用对应的函数

举例

1. time与stdlib

这个比较注意的点就是随机数的问题
如果直接用rand()%1000,会导致某种意义上数字并不随机
rand() 函数产生的随机数是伪随机数,是根据一个数值按照某个公式推算出来的,每次启动计算机时是随机的,但是一旦计算机启动以后它就不再变化了。
这个时候用srand函数配合时间的概念
srand((unsigned int)time(NULL))就会使随机数真正随机了

2.easyx

这个是vs里的功能,可以插画按钮绘图等,相较于python中的小窗口绘画功能,这个更为全面且操作性拉满!!

二、学习中的小笔记

说明

同样,每个人学习方法不一样,所以笔记样式也不一样,我记笔记的时候可能不会按照某种特定的顺序,但我会对笔记的位置有印象,在结合所需笔记的时候能够快速定位

1.表格类笔记

引用部分
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、个人着重看的两个点(与之前的Pascal差异较大的地方)

1.快排

之前所了解的快排形式

int quick_sort(int *a, int low, int high)
{
	int i = low;	//第一位
	int j = high;	//最后一位
	int key = a[i]; //将第一个数作为基准值-- 先找到一个基准值
	while (i < j)
	{					
		while(i < j && a[j] >= key)
		{
			j--;
		}
		a[i] = a[j];	
		while(i < j && a[i] <= key)
		{
			i++;
		}
		a[j] = a[i];
	}
	a[i] = key;
	if (i-1 > low) 
	{
		quick_sort(a, low, i-1);
	}
	if (i+1 < high)
	{
		quick_sort(a, i+1, high);
	}
	return 0;
} 

同样这也是我在学习pascal语言时所作为常见的快速排序的子程序格式
注:pascal里的子程序概念相当于c语言中函数的概念。
但我在翻阅快排的时候,看到了一个十分简洁方便记忆的形式,如下

Int kp(const void *a,const void *b)
retun *(int*)a-*(int*)b
qsort(arr,sizeof(arr)/sizeof(arr[0]), sizeof(arr[0]), kp)

这个简单形式快排,让我眼见一亮,没有想到快排还能如此简洁。
qsort快排函数,stdlib函数库内

2.字符串

相较于pascal用string就能表达字符串,c语言采用的是数组形式存储字符,并有一系列的字符串函数(string.h)
Pascal采用的字符串形式的话,个人觉得和python是比较像的,比如ord/chr函数。

下面举几个c语言的字符串函数
函数原型: char *strdup(const char *s)
函数功能: 字符串拷贝,目的空间由该函数分配
函数返回: 指向拷贝后的字符串指针
参数说明: src-待拷贝的源字符串
所属文件: <string.h>

函数名称: strcpy
函数原型: char* strcpy(char* str1,char* str2);
函数功能: 把str2指向的字符串拷贝到str1中去
函数返回: 返回str1,即指向str1的指针
参数说明:
所属文件: <string.h>

函数名称: strncpy
函数原型: char *strncpy(char *dest, const char *src,intcount)
函数功能: 将字符串src中的count个字符拷贝到字符串dest中去
函数返回: 指向dest的指针
参数说明: dest-目的字符串,src-源字符串,count-拷贝的字符个数
所属文件: <string.h>
注意:strncpy只复制指定长度的字符,不会自动在末尾加’\0’。若指定长度超过源字符串长度,不够的部分补‘\0’,

函数名称: strcat
函数原型: char* strcat(char * str1,char * str2);
函数功能: 把字符串str2接到str1后面,str1最后的’\0’被取消
函数返回: str1
参数说明:
所属文件: <string.h>

函数名称: strncat
函数原型: char *strncat(char *dest, const char *src, size_t maxlen)
函数功能: 将字符串src中前maxlen个字符连接到dest中
函数返回:
参数说明:
所属文件: <string.h>
注意:与strncpy不同的是,strncat会自动在末尾加‘\0’,若指定长度超过源字符串长度,则只复制源字符串长度即停止

函数名称: strcmp
函数原型: int strcmp(char * str1,char * str2);
函数功能: 比较两个字符串str1,str2.
函数返回: str1<str2,返回负数;str1=str2,返回 0;str1>str2,返回正数.
参数说明:
所属文件: <string.h>

函数名称: strncmp
函数原型: int strncmp(char *str1,char *str2,int count)
函数功能: 对str1和str2中的前count个字符按字典顺序比较
函数返回: 小于0:str1<str2,等于0:str1=str2,大于0:str1>str2
参数说明: str1,str2-待比较的字符串,count-比较的长度
所属文件: <string.h>

函数名称: strpbrk
函数原型: char *strpbrk(const char *s1, const char *s2)
函数功能: 得到s1中第一个“同时也出现在s2中”字符的位置指针
函数返回: 位置指针
参数说明:
所属文件: <string.h>

函数名称: strcspn
函数原型: int strcspn(const char *s1, const char *s2)
函数功能: 统计s1中从头开始直到第一个“来自s2中的字符”出现的长度
函数返回: 长度
参数说明:
所属文件: <string.h>

函数名称: strspn
函数原型: int strspn(const char *s1, const char *s2)
函数功能: 统计s1中从头开始直到第一个“不来自s2中的字符”出现的长度
函数返回: 位置指针
参数说明:
所属文件: <string.h>

函数名称: strchr
函数原型: char* strchr(char* str,char ch);
函数功能: 找出str指向的字符串中第一次出现字符ch的位置
函数返回: 返回指向该位置的指针,如找不到,则返回空指针
参数说明: str-待搜索的字符串,ch-查找的字符
所属文件: <string.h>

函数名称: strrchr
函数原型: char *strrchr(const char *s, int c)
函数功能: 得到字符串s中最后一个含有c字符的位置指针
函数返回: 位置指针
参数说明:
所属文件: <string.h>

函数名称: strrchr
函数原型: char *strrchr(const char *s, int c)
函数功能: 得到字符串s中最后一个含有c字符的位置指针
函数返回: 位置指针
参数说明:
所属文件: <string.h>

函数名称: strrev
函数原型: char *strrev(char *s)
函数功能: 将字符串中的所有字符颠倒次序排列
函数返回: 指向s的指针
参数说明:
所属文件: <string.h>

总结

在已有其他语言基础上学习c语言还是比较好上手的。
通过学习总结观察,也能发现,pascal,c,python等语言之间的共同点的。

  • 18
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值