C语言------基础关键词
1、strcmp
strcmp会根据ASCII编码依次比较两个字符串的每一个字符,直到出现找不到的字符,或者到达字符串的末尾(\0)。
strcmp是比较两个字符串,用法如下:
原函数:
int strcmp(const char *, const char *);
举例:
int res;
char s1='a';
char s2='b';
res=strcmp(s1,s2);
printf("res= %d\r\n",res);
strcmp对返回值定义: 如果两个相比较的两个字符串相等,则返回0; 如果相比较的两个字符串不相等,若返回值>0,则s1>s2;若返回值<0,则s1<s2。
2、strtok
strtok分解字符串的函数。
原函数: char *strtoks(char *str, char *delim); str--要被分解的一组字符串; delim--分隔符字符串
举例:
char str="hello!\r\n";
char s;
s=strtok(str,"!");
printf("%s\n",s);
打印为hello
3、atoi
atoi是把字符串转化为一个整型,char型转int型。
原函数: int atoi(const char *s)
举例:
char *ptr="-13.356";
int a;
a=atoi(ptr);
printf("a= %d\r\n",a);
打印结果a=-13
4、condition ? X:Y三目运算符
条件运算符,如果condition为真,则值为X,否则为Y。
举例:
int a=10;
int b=20;
a>b ? printf("a最大"):printf("b最大")
打印结果:b最大
5、 -> 运算符
如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,要用”->” 。
举例:
struct Data
{
int a,b,c;
}
struct Data *p;
struct Data A={3,5,8};
int x;
p=&A;
x=p->a;
printf("x=%d\r\n",x);
打印结果:x=3
6、ifdef endif 调试
使用ifdef endif打印调试信息。
include "stdio.h"
#define CONFIG_DEBUG
int main()
{
#ifdef CONFIG_DEBUG
printf(打印调试信息"");
#endif
while
{
......
}
}
7、memset
memset复制字符到直到字符串的前n个字符。
原函数: void *memset(void *str,int c,size_t n)
举例:
char str[50];
strcpy(str,"hello,world!");
memset(str,'$',7);
printf(str);
打印结果:$$$$$$$worid!
8、回调函数、钩子函数
涉及到结构体里的函数指针,以及结构体里的回调函数。等我理解了,单独写。
9、0U、1U---”奇怪写法“
在C语言中,数值常数默认int型,当数值常量后面带有符号(如:U/UL/f)时,代表指定了数据类型。
0U表示无符号整型0;1U表示无符号整型1。
例如:浮点型常数1.245f这种表示方式。
10、memcpy
字符串复制函数。
函数原型: void *memcpy(void *str1,const void *str2,size_t n); str1---指向用于存储复制内容的目标数值,类型强制转换为void*指针 str2---指向要复制的数据源,类型强制转换为void*指针 n---要背复制的字节数
举例:
char *data =(char*)malloc(sizeof(char)*10);
memcpy(data,"0123456789",10);
puts(data);
memcpy(data,"aaaaa",5);
puts(data);
free(data);
打印结果:
0123456789
aaaaa56789
11、malloc
分配多大字节的内存块,当内存不使用时,需要使用free释放掉内存空间。
函数原型: void *malloc(unsigned int num_bytes) 如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。
举例:
char *p;
p=(char *)malloc(100);
if(p)
{
printf("空间分配成功");
}
free(p);
12、枚举 enum
枚举enum,使用{}括起来的一组枚举常量,每个枚举常量可以用一个标识符来表示,也可以指定一个整数值,如果没有指定,默认从0开始递增。
格式:
enum 枚举名 {枚举元素1,枚举元素2,......};
enum和typedef一起用,定义一个枚举,给这个枚举类型起个外号。
举例:
typedef enum{
monkey=0U,
fish,
chicken,
}num;
13、typedef
typedef是为现有的类型起了一个别名,注意:它没有产生新的类型,就像一个外号一样。
比如:有只叫小花的小猫,人们可以叫它小花,也可以叫它猫猫。