1.指针指向栈区
栈区自动存放变量,正常使用
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *p;
int a;
p=&a;
*p=10;
printf("*p=%d\n",*p);
return 0;
}
2.指针指向堆区
堆区要手动建立内存并进行释放,所以较复杂
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *p;
p=(int *)malloc(sizeof(int)); //建立堆区内存空间
if(p==NULL)
{
printf("内存分配失败\n");
}
*p=10;
printf("*p=%d\n",*p);
if(NULL!=p)
{
free(p); //释放堆区内存空间
p=NULL;
}
char *q;
q=(char*)malloc(0);
*q="hello";
printf("*q=%s\n",*q); //这里通常不会报错,但是已经出现内存溢出现象,会导致后面出现错误
return 0;
}