20171213课堂笔记

来源:互联网 发布:护目镜软件下载 编辑:程序博客网 时间:2024/06/02 03:26

20171213

学习内容:
1.指针
2.动态申请内存空间

该日指针学习的知识点:

1.指针

指针常量:
(指针变量前加const) int *const p;指针本身是一个常量。在声明的时候初始化,里面的值(存放的地址)不能更改。
常量指针:
(在类型前加const) const int *p;指针本身是一个变量,初始化是最好给一个常量的地址,它里面值(存放的地址)可以改变。
指针常量常量指针:
(暂时不清楚应该)

 const   数据类型 * const 指针变量=变量名;

数据类型 const  *const 指针变量=变量名;


指针不能改变,指针指向的值也不能改变




记法:
const int p;// p 为常量,初始化后不可更改
const int*p; // *p 为常量,不能通过*p改变它指向的内容 
int const*p; // *p 为常量,
同上int*const p; // p 为常量,初始化后不能再指向其它内容

作者:DZ LI
链接:https://www.zhihu.com/question/19829354/answer/31335088
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2.动态申请内存空间

malloc 和 realloc

malloc概念:
https://baike.baidu.com/item/malloc%E5%87%BD%E6%95%B0?fromtitle=malloc&fromid=659960(百度百科解释)
malloc函数是一种分配长度为num_bytes字节的内存块的函数,可以向系统申请分配指定size个字节的内存空间。malloc的全称是memory allocation,中文叫动态内存分配,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存。
返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以通过类型转换强制转换为任何其它类型的指针
realloc概念:
realloc原型是extern void *realloc(void *mem_address, unsigned int newsize);

https://baike.baidu.com/item/realloc  (百度百科解释)
课堂作业:
void is_prime()
{
int *a = (int*)malloc(sizeof(int));
int i, j,num = 1;
for (i = 2; i < 1000; i++)
{
for (j = 2; j <= i; j++)
{
if (i%j == 0)
{
break;
}
if (j == (i - 1))
{
num++;
a = (int*)realloc(a, num*sizeof(int));
*(a + num - 1) = i;
printf("%d ", *(a + num - 1));
}
}
}
printf("%d", num);
printf("--------------------------------------------------------------\n");
for (i = num; i > 1; i--)
{
num--;
printf("%d ", *(a+num));
}
}