- 博客(10)
- 收藏
- 关注
原创 关于链表的循环输入
链表在输入时会牵扯到不断地创建新节点,因此需要不断地在堆区申请内存。刚开始在做这个的时候考虑到申请内存就需要给指针起名字,但是如果需要每个节点都要起名字就无法放到循环中去。此问题的解决方法是,不用给每个新开辟的节点(即指针)起名字直接在堆区申请内存并赋值给当前节点的下一节点。如下图所示,是循环输入一个链表代码 while (1) { cin >> temp; if (temp == -1) { break;...
2022-01-17 15:50:24 964
原创 结构体所占内存大小
此处主要遵循三个条件1、代码从上往下执行2、结构体每个成员的地址偏移都应该是该成员的整数倍,如果不是整数倍该成员就得填充3、结构体最终的内存大小应该是所有成员的整数倍,如果不是就填充(此处说的填充均指的是,填充最小的字节的情况下使其满足条件)example:struct a { char d; ① double w; ② int abc; ③ short q; ④ };为方便给四个...
2021-07-21 20:18:42 2447 1
原创 关于链表的输入输出问题
首先要注意的是链表的输入输出如果放在循环里这和字符串以及整型的输入输出不太一样,因为链表的输入每输入一个数都需要在申请一次内存,并且还要处理好头节点的返回问题,以及最后一个节点的free问题,这些问题常常通过引入第三个节点解决。关于具体的输入输出问题可参考以下代码,这段代码是一个力扣题,题目如下给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都...
2021-07-09 17:13:02 1410
原创 关于程序的输入时,以-1为输入结束标志
有的时候遇到数组的输入时候,如果事先知道元素的个数时候就直接用for循环+scanf即可,但是有时候我们不知道待输入元素的个数,一般常采用的方式是以-1为输入结束的标志,此时应该怎样实现呢,最初想到的是以do while实现,先输入一个判断是否为-1再循环输入即可,但是此时主循环之前已经输入了一个,这就导致统计输入个数的时候容易逻辑不清,因此不推荐采用这种方式。可以下雨下面这个方法 while (1) { scanf_s("%d", &num[i]); ...
2021-07-03 17:01:00 9497
原创 关于递归程序的逐步推敲
递归问题一环套着一环一般很难分析程序,此处给出一段程序不仅是想分析递归,还应注意此处的函数返回值问题。double pow1(double x, long long n) { if (n == 0) { return 1; } if (n == 1) { return x; } double halfPow = pow1(x, n / 2); return n % 2 == 0 ? halfPow * halfPow : h...
2021-07-01 18:33:20 58
原创 关于整型或者字符串的输入输出
对于字符串的输入输出可以采用void test1(){ char* str = malloc(sizeof(char)); gets(str); puts(str);}代码中的定义字符串的方式也可换为 char str[100];对于整型的输入输出分两种1、知道要输入的数字个数 int num[100]; //知道输入多少个数字的时候 for (int i = 0; i < 5; i++) { ...
2021-06-30 18:16:33 903
原创 关于数组的定义以及malloc之后的近似数组的使用
一般地定义数组时可以这样 int arr[50];或者这样 int arr[] = { 1,2,3 };不能出现这样地定义 int n; int arr[n];当我们需要一个能够储存n个数的数组的时候可以这样int* nums = malloc(sizeof(int)*n);需要对数组的元素赋值时候可以这样nums[0] = nums[1] = 1;...
2021-06-30 17:11:01 83
原创 关于自己在编写动态数组的一些问题
struct dynamicArray{ void** pAddr; //数组的容量(注:数组的容量和数组的大小是有区别的,数组的容量指的是数组最大能存多少数据而数组的大小指的是数组此时存了多少数据) int m_Capacity; //数组大小 int m_Size;};struct dynamicArray* init_dynamicArray(int capacity){ if (capacity <= 0) { ...
2021-06-29 19:37:18 160
原创 关于void**问题的整理
初次接触动态数组的编写时候在晚上学习的程序是这样定义动态数组的struct dynamicArray{ void** pAddr; //数组的容量 int m_Capacity; //数组大小 int m_Size;}; 此处虽然大概知道之所以使用void**可能是因为保护数据类型,但是一直不明什么为什么时void**而不是void*。 直到自己尝试去写程序实现发现当程序这样写时会提示%d对应的是int类型,而p[0]...
2021-06-29 18:49:31 403
原创 malloc(new)之总结
刚写代码时候通常不了解什么时候需要申请内存,根据自己的猜想以及测试,当需要定义一个指针类型并且需要给这个地址里面赋值的时候就需要申请内存,而之所以对申请内存很迷是因为刚开始学习c的时候也时常遇到int* p;但是并没有牵扯申请内存。此处分两种情况:1、int* p; p=5;当定义int* p的时候我们知道此时p是作为容器存储地址的,这两句其实并不是给p作为地址所指向的内存单元赋值,而是把5作为一个地址赋值给p了,也就是说此时p作为一个存地址的容器他所存的地址是5;而此时是不能给5所指向的内存单元赋值的
2021-06-24 16:40:28 81
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人