C指针:指针必须有所指才有意义

  • Post author:
  • Post category:其他



最近在学C语言,把自己遇到的问题分享一下,希望大家不要踩坑哦!

许多新手在学C语言时容易犯的一个错误,就是指针没有指向目标就拿来直接使用。

int *p;
*p = 1;


错误示例——图一

而在刚开始学习数据结构时也会有类似的错误

typedef struct StackNode
{
	SElemType data;
	struct StackNode* next;
}StackNode, *LinkStack;

LinkStack S;
S->data = 3;


错误示例——图二


这时系统会显示报错,

这里想强调的是:一个指针必须要指向一个确定的地址才有意义,单独一个指针是没有任何价值的。


解决方案:使用malloc函数在内存中分配一块地址,然后让指针指向这块地址

//定义一个数据类型:其实是链表

typedef struct StackNode
{
	SElemType data;
	struct StackNode* next;
}StackNode, *LinkStack;

LinkStack S;
S = (LinkStack)malloc(sizeof(StackNode));

//malloc函数就是在内存中分配一块地址,记得 #include <stdlib.h>
//这时候可以对指针进行操作

S->data = 3;
S->next = NULL;



版权声明:本文为tcl271828原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。