c语言5.14

来源:互联网 发布:大数据时代pdf百度云 编辑:程序博客网 时间:2024/06/05 18:50
1.char *p = (char *)malloc(100 * sizeof(char))
给一个100字符的空间,(char * )为强制类型转换
malloc分配一部分空间给* p,同时这部分空间未被清空
需要判断语句是否为空,防止程序出错

2.menset (p,0,100 * sizeof(char))
清空100字符的空间变成0

3.free(p)
释放内存
此时p会变成野指针,需要加 p = NULL
(如果不释放则会出现内存泄漏)

4.p = (char *)realloc ( p,100 * sizeof(char))
重新调整分配一个空间在原来p指向地址

5.char *p = (char *)calloc(100, sizeof(char))
与malloc相似,但是可以自动清0

6.结构体:struct
#include <stdio.h>
#include <string.h>
struct Student
{
int age; //结构体有三个内容
char name[20];
int id;
};

int main()
{
struct Student s1;
s1.age = 20;
s1.id = 0;
strcpy(s1.name, "Zhang");//字符串不能用=,要用粘贴指令
printf("%d %s %d",s1.age, s1.name, s1.id);
return 0;
}

main中的程序可以便捷成
struct Student s1 = (20, “zhang”,0);

结构体指针
struct Student *ps1 = &s1;
printf("%d %s %d\n",ps1 -> age, ps1 -> name, ps1 -> id);
printf("%d %s %d\n",*(ps1).age, *(ps1).name, *(ps1).id);
上述两句效果一样

结构体大小的计算
例:
#include <stdio.h>

struct demo1
{
char a;
int b;
char c;
};

struct demo2
{
char a;
char b;
int c;
};

int main()
{
printf("%d\n",sizeof(struct demo1));
printf("%d\n",sizeof(struct demo2));
return 0;
}

输出:第一个12 第二个8
主要原因是 内存字节对齐

7.共用体(联合体)union
使几个不同的变量共同占同一段内存的结构称为“共同体”类型的结构。
长度为最长成员的长度

例:
union demo
{
int a;
char ch[4];
};

int main()
{
union demo d;
d.a = 0x12345678;
int i;
for (i = 0; i < 4; i++)
{
printf("%d\n",d.ch[i]);
}
return 0;
}

输出 120 86 52 18 16进制转10 及是78 56 34 12
小端:反序存储

8.枚举
enum NUM

9.typedef int INT;
将int重命名INT
typedef int NUM[100]; int [100] ->NUM

陷阱
typedef int* NUN;
...
a = 10;
const NUN f = &a;保护了地址及f,没有保护值
...















0 0
原创粉丝点击