C相关学习小结

C语言结构体中的边界对齐问题

事实上,结构成员在内存中的存储并不是想当然地一个紧挨着一个排列下来的,由于提高数据读取速度的要求以及其他一些方面的原因,计算机系统对内存中基本数据类型的存放存在一种内存对齐机制,即要求这些数据的首地址必须是某个数K(通常为4或8)的整数倍,具体规则如下:

1.编译器按照结构体成员列表顺序给每个成员分配内存

2.当成员需要满足正确的边界对齐时,成员之间用额外字节填充

3.结构体的首地址必须满足结构体中边界对齐要求最为严格的数据类型所要求的首地址

4.结构体的大小为其最宽数据类型的整数倍

---------------------

原文链接:https://blog.csdn.net/qq_37521235/article/details/55136083

 

C++中关于输入cin的一些总结

cin简介

cin是C++编程语言中的标准输入流对象,即istream类的对象。cin主要用于从标准输入读取数据这里的标准输入,指的是终端的键盘。此外,cout是流的对象,即ostream类的对象,cerr是标准错误输出流的对象,也是ostream 类的对象。这里的标准输出指的是终端键盘,标准错误输出指的是终端的屏幕。

cin

当我们从键盘输入字符串的时候需要敲一下回车键才能够将这个字符串送入到缓冲区中,那么敲入的这个回车键(\r)会被转换为一个换行符\n,这个换行符\n也会被存储在cin的缓冲区中并且被当成一个字符来计算!

eg:123456[enter] ,此时缓冲区中的字节个数是7

cin>>

cin可以连续从键盘读取想要的数据,以空格、tab或换行作为分隔符。cin先把数据存入缓冲区,然后cin>>从缓冲区逐个读取数据,其中遇到分隔符表示一个输入字符的结束,将输入字符值赋给变量,cin>>会自动忽略分隔符(事实上,字符后面的分隔符是残留在缓冲区的,cin>>不做处理。),之后开始下一个字符的读取。

注:要求用户“按回车键继续”的程序,不能使用 >> 运算符只读取按回车键的行为。

cin.get()

读取单个字符,注:cin.get()从输入缓冲区读取单个字符时不忽略分隔符,直接将其读取

---------------------

原文链接:https://www.cnblogs.com/mini-coconut/p/9041925.html

 

 

 

大端序和小端序的区别

首先还是先看下基本概念:

1、大端序(Big-endian):数据的高位字节存放在内存的低地址处,低位字节存放在内存的高地址处。

2、小端序(Little-endian):数据的低位字节存放在内存的低地址处,高位字节存放在内存的高地址处。

:80x86机和Intel处理器一般都是小端序,而单片机和网络上的数据一般是大端序。

c语言中NULL和EOF有什么区别

C语言中的NULL代表空指针,其定义为
         #define NULL (void *)0
EOF是End Of File的简写,即文件结尾。其定义为
           #define EOF -1
二者区别:
1 值不同,NULL是0, EOF是-1。
2 类型不同,NULL是指针,而EOF只是普通的整型常量。
3 应用范围不同。
NULL一般用作指针操作,包括指针类型赋初始值,返回指针类型的函数在出错时的返回值等。
EOF一般用于输入函数,比如scanf, 或者各种读文件操作函数等。当返回EOF时代表读函数出错,达到了文件尾。

 

发布了21 篇原创文章 · 获赞 16 · 访问量 8343

猜你喜欢

转载自blog.csdn.net/rentan0930/article/details/100034024