这是一个开始,是点点滴滴的积累
命令:
ulimit -a
查看控制shell程序的资源
printf的新风格:
printf("hello "
"world!\n");
结构体指针的指针:
在C/C++中,自定义类,结构体等默认都是按值传递的。按值传递在函数中是无法改变参数的值的。
当函数要改变参数的值时,可以用指针传递参数,改变指针所指地址的值。
例如:
如果要在函数中修改结构体指针所指向的地址,则
函数 int setsockaddr(struct sockaddr **sa);
调用函数
struct sockaddr * sa;
setsockaddr(&sa);
char *str = "hello";
str是只读数据,不能修改
char str[] = "hello";
str不是只读数据,可以修改
printf("%p\n", &a);//%p打印内存地址
结构体的大小
编译器默认结构体大小整体按4字节对齐,最小数据类型补字节,例如
sturct test1{
int n;
char str[6];//char 比 int 小,补2字节对齐
};//4+6=10不是4的倍数,补2字节成12
sizeof(struct test1);//值是12
struct test2{
int n;
short int sn;
char str[6];
};//4+2+6=12是4的倍数,不用补
sizeof(struct test2);//值是12
struct test3{
int n;
short int sn;
char str[4];//char 比 short int 小,补2字节对齐
};//4+2+4=10不是4的倍数,补2字节成12
sizeof(struct test3);//值是12
struct test4{
int n;
short int sn;//short int 比 int 小,补2字节对齐
};//4+2=6不是4的倍数,补2字节成8
sizeof(struct
test4);//值是8
按字节对齐,要加__attribute__ ((packed)),例如
sturct test5{
int n;
char str[6];
}__attribute__ ((packed));
sizeof(struct test5);//值是10
阅读(577) | 评论(0) | 转发(0) |