VSCode调试C的记录
- 报错:undefined reference to “ ”。
reason 1: 多个文件直接编译时,虽然有头文件,但没有找到.c文件。因此,在tasks.json中的args:[ ]中加入.c文件的路径。
reason 2: 多个文件编译时,在头文件中声明了外部结构体变量,但在.c文件中忘记定义。 - 调试过程中如何查看指针存储的具体数值
监视区输入如下:
* p @ n
其中:p表示要查看的指针,n表示要查看存储其中的变量的个数。(指针一般与数组一起使用,因此可以理解为要查看的数组的前n个数)
查看二维指针:
p为二维指针,其动态内存分配为:
p = (double **)malloc(m*sizoef(double *);
for(int i = 0; i < m; i++)
{
p[i] = (double *)malloc(n*sizeof(double));
}
其中:可以理解为p指向m个一维指针,每个一维指针又指向n个double型变量。
查看二维指针p:
* (p[i]) @ n
其中:i与上述动态内存分配时i的含义相同。
3. 为结构体动态分配内存
struct type_struct *p;//定义结构体指针
p=(struct typr_struct *)malloc(sizeof(type_struct));//动态分配内存
结构体中的指针变量也需要分配内存
p->x=(double *)malloc(sizeof(double));
x表示指针成员,根据具体需要存储的数值进行内存分配即可。
4. 一些小细节
- 变量的类型一定要前后统一,否则很容易出现错误;
- memset这个函数的头文件为#include <string.h>,并且对象为char类型,初始化为int类型时会出错,但初始化为0时可以使用(特例)。
- 指针分配内存很重要。