C语言学习笔记1

gcc  -o hello hello.c

-o: 输出可执行文件

-c:只要求编译器输出目标代码(.o文件),而不输出可执行文件

-g:用于调试

./hello 查看输出结果

一个程序包含两部分:

  1. 对数据的描述:程序中要指定数据类型和数据的组织形式
  2. 对操作的描述(算法)

Scanf(”%d”, &age);

If else中else总是跟最近的if进行匹配

运算符 . 是成员选择(对象)

->是成员选择(指针):对象的指针指向成员名

+=: 加后赋值

-=: 减后复制

Strcpy:拷贝

库函数头文件:#include<stdio.h>

三目运算符:(x>y)?(x):(y)

Return: 结束整个函数

一般约定return 0 和return 1

Return 0 和return -1 这样配套使用

Return关键字的作用是返回流程的控制权,只要使用了return,不管有无返回值,都表示该函数调用结束

Return 0 :代表正常终止

Return 1 代表函数非正常终止

Return -1 代表函数非正常终止

被调函数return 1或者return-1 只是给主调函数一个标志,说明执行过程中遇到异常情况

%d:整形输出

%o:八进制形式输出

%x:以16进制输出整数

%u:输出无符号型数据

%c:输出一个字符

%s:输出一个字符串

%f:输出浮点数

#ifndef “如果未定义” 检用来检查特定·符号(宏)在文件或项目中是否尚未被定义

#define 宏定义。用于在尚未定义的情况下定义该符号。将该符号设置为特定之,或仅将其定义为某种意义上的“真”

#endif : 标记了应仅包含一次的代码块的结束

字符串末尾有个\0 占位符

使用静态对象代替非静态对象的优势:

在递归函数中,通常会使用非静态局部对象(栈对象)来存储递归调用中的临时变量和中间状态。每次递归都会创建和销毁这些非静态局部变量,导致额外的时间和空间开销

静态对象在程序的生命周期内保持不变,不会在每次函数调用时重新创建和销毁。并且静态对象还可以保存递归调用的中间状态。

指针类型的意义:

指针类型决定了指针向前或者向后走一步有多大(距离)

指针类型决定了对指针解引用的时候有多大的权限(能操作几个字节)

野指针:就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)

比如:指针未初始化、指针越界

规避野指针:

指针初始化

小心指针越界

指针指向的空间释放(即使已经置NULL)

避免返回局部变量的地址

指针使用之前检查有效性

指针变量进行相减是指针所代表的地址进行相减,将得出的值除以指针所指向的空间所占据的字节数

数组名表示的是数组首元素地址

指针数组,数组每个元素都是指针

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值