![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C语言学习
文章平均质量分 64
C语言
CoCo?X
这个作者很懒,什么都没留下…
展开
-
动态内存分配(2):总结自己笔记
1、malloc和free void* malloc (size_t size); 这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。 如果开辟成功,则返回一个指向开辟好空间的指针。 如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。 返回值的类型是 void* ,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己 来决定。 void free (void* ptr); free函数用来释放动态开辟的内存。 如果参数...原创 2021-11-22 20:13:55 · 746 阅读 · 0 评论 -
初识指针(1)
指针是什么: 1. 指针是内存中一个最小单元的编号,也就是地址 2. 平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量 指针就是地址,口语中说的指针通常指的是指针变量 /* char* p -->定义一个指针变量,该指针变量指向的是char类型的数据 int* p-->定义一个指针变量,该指针变量指向的是int类型的数据 */ int main(void){ printf("%d\n",sizeof(char*))...原创 2021-11-05 11:30:21 · 101 阅读 · 0 评论 -
指针详解(2)
一、数组参数,指针参数 1、一维数组传参 #include <stdio.h> void test(int arr[])//ok? {} void test(int arr[10])//ok? {} void test(int *arr)//ok? {} void test2(int *arr[20])//ok? int *arr[]也可以 {} void test2(int **arr)//ok? {} int main() { int arr[10] = {0...原创 2021-11-10 00:25:28 · 77 阅读 · 0 评论 -
指针详解(1)
#include<stdio.h> void test(int arr[]){//对于函数传入数组实际传入的是数组首元素地址 int size = sizeof(arr)/sizeof(arr[0]); /* 所以这里的sizeof(arr)存的是地址 对于32位机器来说:32/8=4(字节)-->地址大小; 对于64位机器来说:64/8=8(字节)-->地址大小; 因为数组是int类型sizeof(arr[0])-->一个元素大小是4字节 .原创 2021-11-08 00:14:24 · 624 阅读 · 6 评论 -
初识指针(2)
一、指针的相关运算 1、指针-指针 int main(void){ char ch[5] = {0}; int arr[10]={1,2,3,4,5,6,7,8,9,10}; printf("%d",&arr[9]-&arr[0]); printf("%d",&arr[9]-&ch[0]);//这种是错误的得类型匹配 return 0; } //输出结果:9 指针-指针得到的是元素个数...原创 2021-11-05 16:44:11 · 86 阅读 · 0 评论 -
动态分配内存(1)
1、栈区,堆区,静态区分别存放什么 栈区:局部变量、函数形式参数 堆区:动态分配内存 静态区:全局变量、静态变量 2、为什么进行动态内存分配 int val = 20;//在栈空间上开辟四个字节 char arr[10] = {0};//在栈空间上开辟10个字节的连续空间 /* 上述的开辟空间的方式有两个特点: 1. 空间开辟大小是固定的。 2. 数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配。 */ 3、动态内存函数介绍 3.1malloc和f...原创 2021-11-22 19:47:12 · 590 阅读 · 0 评论