day13
1.C语言本质
操作内存
命令行参数
int main(int argc, char *argv[])
argc: 参数的个数
argv: 参数存放的指针数组
int main(int argc, char *argv[])
{
int i;
for(i = 0; i < argc; i++)
{
printf("%s\n", argv[i]);
}
return 0;
}
2.堆区空间的操作
2.1 malloc
#include <stdlib.h>
void *malloc(size_t size);
功能:开辟堆区空间
参数:
size_t size:开辟空间的大小,单位字节
返回值:
void *: 成功:返回开辟空间的首地址
失败:NULL
注意:
1.malloc 开辟空间是连续的
2.2 free
#include <stdlib.h>
void free(void *ptr);
功能:释放空间
参数:
void *ptr: 释放空间的首地址
注意:
free 不能多次
练习
//开辟空间
char *p = (char *)malloc( sizeof(char) * 32);
if( p == NULL)
{
//提示错误
//做错误处理
}
//使用空间
char *q = p;
//error:p = "123456"; //内存泄露
strcpy(p, "123456");
//回收空间
free(p);
p = NULL;
2.申请堆区空间,存放一个字符串,打印出来
char *p = (char *)malloc(sizeof(char) * 32);
if(NULL == p)
{
printf("malloc error\n");
return -1;
}
printf(">:");
gets(p);
printf("str:%s\n", p);
free(p);
p = NULL;
3.结构体
定义一个结构体类型的一般形式为:
struct 结构体名
{
数据类型 成员名1;
数据类型 成员名2;
....
数据类型 成员名n;
};
结构体变量:
存储类型 数据类型 变量名;
访问结构体成员:
变量名 .
指针 ->
eg:
struct student{
char name[32];
int age;
char sex;
};
struct student stu1;
struct student *pstu;
3.1结构体变量的定义
4.typedef
关键字。作用:给数据类型取别名。
typedef int myint;
typedef int* P_int;
typedef int a[5];
typedef int (*p)[5];
typedef int (*P_func)(int, double);
宏定义:
#define 宏名 替换内容
#define P_int int*
P_int p1, p2; //int *p1, p2;
p1:是指针
p2:是整型变量
typedef int * P_int;
P_int p1, p2;
标签:typedef,15,24.08,int,void,数据类型,malloc,char
From: https://blog.csdn.net/RIOWLee/article/details/141227560