解释:auto根据数据类型分配内存,register在使用时分配CPU寄存器地址
#include
using namespace std;
int func(int n)
{
if (n < 1) // ⚠️ 这里如果fcun = 0,那么还会返回1
return 1;
else
return n + func(n - 1);
return 0;
}
int main()
{
cout << func(5) << endl;
return 0;
}
float k = 0.8567;
printf("%06.1f%%",k*100);
6是用六个位置,0是指第一个非零数字前用零填充,.1小数点后保留1位小数,%%输出一个%。
char* s1 = "Hello world";
char s2[] = "Hello world";
s1[2] = 'E'; // 1
s2[2] = 'E'; // 2
*(s1 + 2) = 'E'; // 3
*(s2 + 2) = 'E'; // 4
指针指向的那个字符串是常量!!!const char*
- 下面哪种方法不能用于文本加密🔐
- RSA。是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的,非对称短发
- RC2和RC4.对称算法,用变长密钥对大量数据进行加密🔐
- DES。对称算法,数据加密标准,速度较快,适用于加密大量数据的场合
- MD5.严格来说不是加密算法,只能说是摘要算法(单向不可逆,不能用于文本加密🔐,可以用来签名,校验数据的完整性)
#include <string.h>
#include <stdio.h>
void main()
{
char x[] = "STRING";
x[0] = 0;
x[1] = '\0';
x[2] = '0';
printf("%d %d\n", sizeof(x), strlen(x));
}
7,0。strlen根据ascii码为0的字符来判断是否结束,'\0'ascii码是0,0本身的值就是0,'0'不能看成是0。sizeof获得的是字节的大小
class A
{
public:
void *p1;
private:
void *p2;
protected:
void *p3;
};
class B: public A {};
继承了全部变量,但是并不是都能访问。3*8=24;
一个十五个优先级:
- 记住一个最高的:构造类型的元素或成员以及小括号(),[],->,.,++,--后置
- 记住一个最低的:逗号运算符','
- 剩余1,2,3,赋值(单目、双目、三目和赋值运算符)
- 算术、关系、逻辑
两种位操作运算符中,移位运算符在算术运算符后边,逻辑位运算符在逻辑运算符的前面。 - 算术运算符分为*、/、%高于+、-。
- 关系运算符中>、>=、<=高于==、!=
- 逻辑运算符中,除了逻辑按位求反(!)是单目外,逻辑&&高于逻辑或||
- 逻辑位运算符中,除了逻辑按位求反~外,按位与&高于按位异或^,高于按位或|
详情🔎参考
int是4字节,大端存储,补齐16进制表示为0x00 00 12 34,unsigned char b = *(unsigned char *)&a;
,由于大端存储,所以上述int a变量的最低地址存储,十六进制中最左边的1字节,0x00
int f(int a, int b, int c)
{
return 0;
}
int main(){
return f(printf("a"),printf("b"),printf("c"));
}
x86架构。函数的参数传递是通过栈传递的。因此参数从右往左顺序是c,b,a所以输出是cba。x86_64架构,函数的前6个参数是通过寄存器传递的,超出6个的部分,如7个参数,8个参数等,通过栈传递。因此参数进寄存器顺序是: a,b,c。依次计算abc
Date:2019 02 06