(自用)C知识点

数据格式

10101010b 表示该数据是二进制数

01236 表示该数据是八进制数

0x1234 表示该数据是十六进制数

2314h 表示该数据是十六进制数

字符串函数

strlen

求字符串长度,遇到'0'停

strcpy  字符串拷贝

strcpy(dest,src);//从src拷贝到dest 注意 \0也会拷贝进去

strcat 字符串追加

strcat(dest,src);//从dest字符串末尾开始追加

 substr 字符串截取

substr(string s, int a, int b);
substr(string s, int a) ;

s.substr(2);//s是string类成员 有this指针 从下标为2开始截到结尾

s.substr(2,3);//从下标为2开始截取3个字符

冒泡排序

void my_sort(vector<int>& v,int begin,int size)
{
    for (int i = 0; i < size - 1; i++)//-1是为了让v[j+1]不越界
	{
		for (int j = 0; j < size - 1 - i; j++)
		{
			if (v[j] < v[j + 1])
			{
				swap(v[j], v[j + 1]);
			}
		}
	}
}

前置++ 后置++

在判断语句中

会执行

int main()
{
    int a = 5;
	if (a++ > 5)
	{
		a += 4;
	}
	else
	{
	}
	cout << a;
	return 0;
}

for循环中的判断表达式中包含赋值

int main()
{ 
    int a = 1;
	for (int x = 0; (a = 120) && x < 4; x++)
	{
		cout << x << " ";
	}
	cout << endl;
	return 0;
}

 若for循环的赋值过程内a=0 则不进入循环

sizeof中包含赋值

int main()
{
    int a=2;
    int n=sizeof(a++);
    cout<<a<<endl;
    return 0;
}

printf的格式

printf()输出格式大全(附 - 示例代码)_努力的小肥丸的博客-CSDN博客_printf输出格式

%[标志] [输出最小宽度] [.精度] [数据长度] 数据类型字符

标志

标志说明
-左对齐,实际输出长度小于最小宽度,右边补空格
+右对齐,正数输出+,负数- 实际输出长度小于最小宽度,左边补空格
#输出16进制
空格正数输出空格,负数输出-
0当实际位数小于最小宽度,前面补零
标志示例输出结果($代表空格)
-(“%-6d\n”,100)100$$$
+

("%+6d\n",100)

$$+100
+("%+6d\n",-100)$$-100
#("%#x\n",0x12)0x12
空格("% d\n",100)$100
空格("% d\n",-100)-100
0("%06d\n",123)000123

精度

%5.3 表示最小输入宽度是5,不够补零或者空格

3表示精度为3 如果是整形,表示最少显示3位,原数位数多就按原数。

如果是浮点型表示小数点后最少显示3位。

如果是字符串,表示最多输入3个。

数据类型字符

%d以十进制打印
%o以八进制打印
%x十六进制打印
%Q这里格式不对 忽略% 直接输出Q
%f以浮点数类型打印

const修饰指针

关键在于const在*前还是后

const  *const修饰的是指针解引用之后的值
* constconst修饰的是指针变量本身

 结构体对齐

32位下 默认对齐数是4         64位下 默认对齐数是8

1.每个成员都放到对齐的位置 对齐数=min(成员字节数,默认)

2.整个结构体放到对齐的位置 对齐数=min(结构体内成员最大的对齐数,默认)

struct A
{
    int a;
    short b;
    int c;
    char d;
}

 a占0 1 2 3         b占4 5         补齐6 7         c占 8 9 10 11         d占 12

结构体大小为13 要位对齐数的倍数 所以大小为16

位段

struct A{
    unsigned a : 19;
    unsigned b : 11;
    unsigned c : 4;
    unsigned d : 29;
    char index;
};

unsigned不指定类型 默认为unsigned int

四个字节 32个bit位 放入a之后还剩13个可以再放入b 剩下的bit位无法再放入c

c另外开一个字节,剩余的28个bit位放不了d。于是d又另开一个字节,所以该结构体相当于有3个int整形,一个char整形。 ab放0123 c放4567 d放8 9 10 11 index放12 总共13个字节不能被4整除,所以结构体大小为16

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值