C/C++语言要点记录

1. sizeof

const char * st = "1234567890";
sizeof(st); //4
strlen(st); //10

当把sizeof用于字符指针时,得到的是指针大小(4),而不是字符串的大小。这是应该用strlen。

当用字符数组时,注意sizeof会包括结尾的\0。例如:

char st[] = "1234567890";
sizeof(st); //11
strlen(st); //10

2. bool

对bool调用sizeof,结果是1。

3. system调用

当用system调用shell,exit 1,则返回值在C程序里读取是256. 例如:

int rtn = system("exit 1");
int rtn2 = system("exit 2");
printf("%d, %d\n", rtn, rtn2); //256, 512

可以将其右移8位,获得原来的返回值:

rtn = (rtn >> 8);
4. 转换timestamp
#include <time.h>
long inputtime = 1499790377L;

struct tm res;
localtime_r(&inputtime, &res);

printf("%d-%d-%d %d:%d:%d\n", res.tm_year+1900,res.tm_mon+1,res.tm_mday,res.tm_hour,res.tm_min,res.tm_sec);
5. 数组的地址操作(32位系统)
#include<stdio.h>
int main()
{
    int a[10];
    printf("%x\n%x\n%x\n%x\n%x\n",a, &a+1, a+sizeof(int), (int*)&a + 1, (int*)((char*)&a+sizeof(int)));
    return 0;
}

bffa8e90
bffa8eb8
bffa8ea0
bffa8e94
bffa8e94

"a"表示数组的地址;

&a+1,a的类型是10个元素的int数组,size是40。+1表示下一个"10元素int数组"的地址,所以+40。

a+4是第4个元素的地址,所以+16。

转成int*后,a的类型是int指针,+1表示下一个这种类型的地址,所以+4。

转成char*后,+4就是原地址+4。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值