看点不一样的

既然说的看点不一样的,那我就直接拿一个题引入吧

题目:输入一个32位整数,输出该数二进制表示中1的个数。
负数在计算机中用其绝对值的补码来表示。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

就像上面这个代码里面的 ">>="这个符号一样,对于我们来说真的很少用的,我们就简单说说他的含义,>>意思是二进制代码向右移动,如果移动为1,就可以看成 un/=2。

在这里插入图片描述
上周有人说了关于“.”和“->”的含义,其实怎么说呢,c语言的教材书上是有的,但是有人提出那我提一遍吧。
在结构体里面会有这样的代码:

typedef struct Student{
	int a;
	char b;
	string s;
}student;
int main(){
	student a;
	//如果我们需要引用a里面的成员的话,可以直接使用a.a;a.b;a.s;
}`

上面这个“.”是常用的一种方法,那“->”是什么呢?
上面我们引入的是一般的引用结构体里面的成员呢?那我们就需要使用->。
->叫做结构体指针运算符,也是用来访问结构体内部成员的。换种说法,如果我们在C语言中定义了一个结构体,然后声明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”
一般情况下用“.”只需要声明一个结构体。格式是:结构体类型名+结构体名。然后用结构体名加“.”加成员名就可以引用成员了。因为自动分配了结构体的内存。如同 int a;一样。

用“->”,则要声明一个结构体指针,还要手动开辟一个该结构体的内存(上面的代码则是建了一个结构体实例,自动分配了内存,下面的例子则会讲到手动动态开辟内存),然后把返回的地址赋给声明的结构体指针,才能用“->”正确引用。否则内存中只分配了指针的内存,没有分配结构体的内存,导致想要的结构体实际上是不存在。这时候用“->”引用自然出错了,因为没有结构体,自然没有结构体的域了。
估计上面的你看了也没明白什么意思

typedef struct Student{
	int a;
	char b;
	string s;
}student;
int main(){
	student *a;
	//当使用结构体定义指针时,就需要使用“->”
	//a->a;a->b;
}`

如果还是不明白的话,可以多看书
最后我再讲一个东西吧,上面那个结构体我定义的名字是不一样的,一个是Student,另一个是student。为什么可以这么写呢?
如果我们前面不加上typedef时,后面如果写student意思就是定义一个这样的变量,而前面加上typedef的话,意思是给struct Student取一个别名为student,去取名的意义在于如果我们定义一个结构体变量的话,如果不取,就应该这样定义

struct Student a;

如果取了别名的话,就可以这样定义

student a;

就看着很简化
C语言中还有一个跟typedef作用很像的一个关键词define也就是宏定义,宏定义就是起简单的替换作用。

typedef long long ll;
//像这个代码我就进程使用,把long long取别名为ll
#define ll long long
#define PI 3.14

看上面的实例,估计你们也都懂了吧,不懂得话百度是你们最好的老师。

发布了4 篇原创文章 · 获赞 0 · 访问量 157

猜你喜欢

转载自blog.csdn.net/weixin_44098364/article/details/104778296