#初识C语言,C语言的预备知识-day_5

目录

前言

一、原码、补码、反码

二、常见关键字

三、指针

四、结构体

总结


前言

内容看目录!


一、原码、补码、反码

只要是整数,内存中存储的都是二进制的补码,正数的原码、补码、反码相同。负数存的是补码。如果要计算,原码是直接按照正负写出的二进制序列,反码是原码的符号位不变(第一位为符号位),其他位按位取反得到的,补码是反码加一得到的。

例子:

-2的原码为:10000000000000000000000000000010

-2的反码为:11111111111111111111111111111101

-2的补码为:11111111111111111111111111111110

二、常见关键字

auto        break        case        char        const        continue        default        do        double                else        enum        extern        float        for        goto        if        int        long        register        return        short        signed        unsigned        sizeof        static        struct        typedef        union   void        volatile        while

auto :局部变量的前面都有auto关键字,只不过省略了,意味着在进入这个局部变量的作用域时,这个局部变量自动创立,离开生命域时自动消去。

typedef//类型定义-类型重定义

例子

typedef unsigned int u int;//即给unsigned int一个别名u int。

extern - 用来声明外部符号(声明后,可以在本源文件中使用其他源文件中的全局变量)。

static:修饰局部变量,局部变量的生命周期变长了。修饰全局变量,改变了变量的作用域,让静态的全局变量只能在源文件内部使用,出了源文件便无法使用。修饰函数,和修饰全局变量效果相同,正确说法:改变了函数的链接属性,一个函数是具有外部链接属性的,其他源文件要使用该函数可以通过声明,但是static会将该函数的属性变为内部链接属性,而后其他文件通过声明将不能使用该函数。

#define MAX 100//定义标识符常量,之后的程序中用到MAX,MAX均为100

#define也可以定义宏-带参数

例子

#define MAX(X,Y) X>Y?X:Y

int main()

{

int a = 10;

int b = 20;

max = MAX(a,b);

printf(“max = %d\n”,max);

return 0;

}

三、指针

要明白指针先明白内存。

内存:内存是电脑上特别重要的存储器,计算机中所有程序得运行都是在内存中进行的。所以为了有效地利用内存,就把内存划分成一个个小的存储单元,每个内存单元的大小是一个字节。为了能够有效地访问到内存的每个单元,就给内存单元进行了编号,这些编号就被称为内存单元的地址。

有一种变量是用来存放地址的,这就叫指针。

例子:

int main()
{
	int a = 10;
	int* p = &a;//取地址,int*是p的类型,p里面存的是a的地址,p就称为指针,是一个变量,指针变量。
	*p = 20;//此处的*就是解引用操作符,这句代码也就是说,通过p中存放的地址找到地址所指向的对象,而后给他赋值,也就是把20赋给了a。
	double b = 3.14;
	double* db = &b;//同上
	return 0;
}

注:在32位平台,其二进制位数为32,一个地址占32个比特位,也就是四个字节。所以在32位平台,一个指针的大小为四个字节,在64位平台,一个指针大小为8个字节。指针的大小和指向的对象无关。指针的大小由平台决定。

四、结构体

例子:创建一个结构体类型(描述一本书)

类似于python中的class(类),里面放着书的各种属性,注意,struct结构的大括号末尾要有分号,表示结构的结束。

//定义结构体
struct Book
{
	//定义结构体中的属性
	char name[20];//C语言程序设计
	short price;
};



int main()
{
	struct Book b1 = { "C语言程序设计",55};//创建一个对象(有struct Book中属性的对象)并赋于属性
	struct Book* pb = &b1;//其指针类型
	//利用pb打印出书名和价格
	printf("%s\n", (*pb).name);//这里就用到了.操作符,点操作符用来找到结构体成员
	printf("%d\n", (*pb).price);
	//简便方法
	printf("%s\n", pb->name);//这里用到了->操作符,结构体指针 -> 结构体成员
	printf("%d\n", pb->price);
	//第三种方法
	printf("书名:%s\n", b1.name);
	printf("价格:%d\n", b1.price);
	b1.price = 15;//更改属性,修改结构体b1成员的价格
	strcpy(b1.name, "C++");//修改b1的名字,strcpy-string copy-字符串拷贝,这个函数只有两个参数,第一个是目的地,第二个是你要拷贝的对象,这个函数是个库函数需要引入头文件string.h。
	return 0;
}

总结

本章内容为C语言预备知识系列最后一片文章,在了解完这些基本知识之后,下篇文章将进入正式C语言的学习!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

OR'CC

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

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

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

打赏作者

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

抵扣说明:

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

余额充值