C语言------基础关键词:strcmp、strtok、atoi、三目运算符、->运算符、ifdef endif打调试信息、memset、memcpy、malloc、enum、typedef

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是为现有的类型起了一个别名,注意:它没有产生新的类型,就像一个外号一样。

比如:有只叫小花的小猫,人们可以叫它小花,也可以叫它猫猫。

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哆啦哆小魔仙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值