初识C语言,查漏补缺

前言

本文主要简单介绍各种操作符、关键字、宏、指针和结构体的定义和使用。

操作符

单目操作符

操作符作用使用方法
逻辑反操作例如:!flag 如果flag为真,则 !flag 为假
sizeof操作数的类型长度(以字节为单位)例如:int a = 1; sizeof(a)=4
++前置、后置++例如:a = 10;当b = a++; a = 11,b = 10;当b = ++a; a = 11,b = 11
- -前置、后置- -方法同++

三目操作符(条件操作符)

exp1?exp2:exp3

  • exp1成立,exp2计算,整个表达式的结构是 exp2 的结果
  • exp1不成立,exp3计算,整个表达式的结构是 exp3 的结果
    例如:max = a >b?a:b,a >b 情况下是max = aa <= b情况下是max = b;

常见关键字

  • unsigned 无符号的
  • typedef 类型重命名 例如在mian函数上面输入 typedef unsigned int u_int当用unsigned int 和 u_int修饰变量时,效果一模一样
  • static 修饰局部、全局变量和函数,修饰局部变量延长生命周期,修饰全局变量和函数本质上将其外部链接属性变成了内部链接属性
  • exturn 声明外部符号 但无法声明static修饰的全局变量和函数

定义宏

#define ADD(x,y) ((x)+(y))
#include <stdio.h>
int main()
{
    int sum = 10*ADD(2, 3);
    printf("sum = %d\n", sum);
    return 0;
}

结果为sum = 50,注意当((x)+(y))改为x+y,结果为23,与预期的结果不符,因此括号不可省略。

指针

在讲指针前我首先需要了解内存。一块空间可以划分为很多个内存单元。
在这里插入图片描述

每一个内存单元为一个字节
每一个内存单元都需要编号,,通过这些编号计算机可以找到对应的内存单元,这些编号叫做地址,也叫指针,所以指针就是地址。
我们知道 int 存放空间是4个字节即4个内存单元。我们假设 int a = 10;那a的地址是哪一个字节呢?实际在a的地址是4个字节中的第一个字节

指针如何使用

#include<stdio.h>
int main()
{
	int a = 10;
	int* pa = &a;
	*pa = 20;
	printf("%d", a);
}

我们用pa来存放指针,pa称为指针变量,其类型是int* 类型;通过使用 * 解引用操作符访问pa 修改a的值,因此上述结果a最终输出20

指针变量的大小

  • 指针变量的大小取决于变量的大小
  • 32位平台下是32bit位(4个字节)
  • 64位平台下是64bit位(8个字节)

结构体

对于一个复杂对象无法简单用单个数据类型进行描述,因此C语言引入结构体概念。

结构体的使用

#include<stdio.h>
struct Book//定义结构体
{
	char name[20];//书名用char类型
	int price;//价格

};
int main()
{
	struct Book b1 = { "算法与数据结构",60 };
	                                  //结构体变量.结构体成员名
	printf("书名:《%s》 定价:%d 元\n", b1.name, b1.price);
}

指针运用结构体

由于我们已经学过指针,我们不妨运用于一下指针。

#include<stdio.h>
struct Book//定义结构体
{
	char name[20];//书名用char类型
	int price;//价格

};
void print(struct Book* pa)
{
	printf("书名:《%s》 定价:%d 元\n", (*pa).name, (*pa).price);
	//printf("书名:《%s》 定价:%d 元\n", pa->name, pa->price);效果一样
}
int main()
{
	struct Book b1 = { "算法与数据结构",60 };
	print(&b1);
}

总结

本文旨在回顾C语言的一些简单概念,虽然简单但是整理内容也花费我不少时间,希望对大家有所帮助!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值