C语言小知识点

本文介绍了C语言中的关键概念,如格式符输出、整型变量操作、ASCII字符、sprintf函数的使用、指针、逗号运算符、条件运算、日期判断、循环处理、斐波那契数列、数组表示、内存管理以及单链表的定义。
摘要由CSDN通过智能技术生成

1.格式符%x输出不带0x

%#x这样会带0x

2.int a=6;

scanf("%c",&a);

printf("%c",a);

输出的是6;

3.ASCIi中

65大写A

4.sprintf(a,"%d",i);

int sprintf(char *str, const char *format, ...)

str -- 这是指向一个字符数组的指针,该数组存储了 C 字符串

format -- 这是字符串,包含了要被写入到字符串 str 的文本。它可以包含嵌入的 format 标签,format 标签可被随后的附加参数中指定的值替换,并按需求进行格式化。format 标签属性是 %[flags][width][.precision][length]specifier

5.逗号运算符

  1. 逗号表达式从表达式1开始顺序从左向右执行
  2. 其逗号表达式最后的值为最后一个表达式的值
  3. 逗号运算的优先级最低,也就说明与其他运算符结合使用的时候,在没有括号的情况下逗号运算符最后才执行

eg:z=(x%y,x/y),这个中z=x/y;和前面没啥关系。

z = (x=5,y=6,x+y);

z赋值为11,x赋值为5,y赋值为6;

6.  sizeof 计算 所占空间的大小

  strlen 求字符串长度"\0"之前的字符个数

7.%p,用来打印地址

指针

指针的字节,占位

32位的无论什么类型数据都是4个字节

64位的是8个字节

做题中遇见的积累

1.一项正一项负可以用三目操作符

2.输出是哪一天就直接使用switch

如何用if判断闰年,用flag,flag=0或1;

flag=1&&month>2  +1

3.如果想要比较循环中前后俩个的值

如何保存前一个的值呢,就是在最前面找另一个变量给他保存一下,就是在那个要改变的前面

4.兔子繁殖问题(斐波那契数列)

可以俩个俩个输出

比如

int a=1,b=1;

for(i=0;i<10;i++)

{

printf("%d,%d",a.b);

a=a+b;

b=b+a;

}

第二种

int a=1,b=1,c=1;

for(i=3;i<10;i++)

{

a=b+c;

b=c;

c=a;

printf("%d",a);

}

4.一个多位数可以放在一个数组中作为字符

但是记得表示的时候用'1',记得加单引号

5.sprintf函数

int a[100];

l=sprintf(a,"%d",i);

用于将i以%d的形式写进a中,a一般是数组,i可以是数字,字母,数组都可以

这个函数的头文件就是#include<stdio.h>

返回值是字符串的长度

可以用于找字符串长度

6.>>

右移

在带符号的移位中,无论正数还是负数,移位后符号不变,数值变化:

正数:左移右移都补0;

负数:原码左移右移都补0,

           反码左移右移都补1,

           补码左移补0,右移补1;

">>>"表示无符号右移,也叫逻辑右移,

即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0

">>"是指:向右移位,如果该数为正,则高位补0,若为负数,则高位补1;

">>"是指:向右移位,如果该数为正,则高位补0,若为负数,则高位补1;

7.& 代表 “按位与”

保留二进制位置相同的数

| 代表 “按位或”

即两个数中间只要有1的位置,在按位或之后,同位置值为1

8.字符串数组

如果用单引号,不会加\0

但是如果是双引号,就会有\0

1.

#include<stdlib.h>

stdlib.h中,包含了C语言的一些常用库函数

包括动态储存的,随机函数等,如果还有宏定义

2.在定义单链表结点类型时,使用struct LNode *next来定义指向下一个结点的指针是因为在C语言中,结构体类型的定义需要在使用之前进行声明。在这个结构体中,struct LNode是自定义的结构体类型,而*next是该结构体类型中的一个成员变量,它的类型是指向struct LNode类型的指针。

为了在结构体中使用自身类型的指针,需要先对该类型进行声明。使用struct LNode *next的方式可以确保在定义结构体时,struct LNode已经被声明过,从而可以正确地使用该类型。

如果不使用struct LNode *next的方式,而直接使用LNode *next,则会导致编译器无法识别LNode这个类型,因为在定义该结构体之前并没有对其进行声明。因此,为了避免编译错误,需要使用struct LNode *next来明确指定指针的类型。

在定义中相当于typedef struct LNode LNode; 

 typedef  LNode *LinkList;

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值