首页 > 其他分享 >指针复习

指针复习

时间:2022-12-26 20:36:22浏览次数:33  
标签:tmp return 复习 int fun 100 NULL 指针


如果有一天,你走路要戴耳机,坐车要靠窗,走在路上不会大喊大叫,被问问题会沉默,你会发现安安静静的挺好。。。

----  网易云热评

一、返回栈区地址

int *fun()

{

int a = 10;

return &a; //函数调用完毕,a释放

}


int main(int argc,char *argv[]) {


int* p = NULL;

p = fun();

*p = 100; //操作野指针指向的内存,容易报错



system("pause");

return 0;

}

 

二、返回data区地址

int *fun()

{

static int a = 10; //函数调用完毕,a不释放

return &a;

}

int main(int argc,char *argv[]) {

int* p = NULL;

p = fun();

*p = 100;

printf("p=%d\n", *p);



system("pause");

return 0;

}

 

三、值传递

void fun(int *tmp)

{

tmp = (int *)malloc(sizeof(int));//堆区分配空间,将地址传递给tmp

*tmp = 100;//将堆区的地址里面的值修改为100

}

int main(int argc,char *argv[]) {

int* p = NULL;

fun(p);//值传递,形参修改不会影响实参

printf("p=%d\n",*p);//err,操作空指针指向的内存



system("pause");

return 0;

}

void fun(int *tmp)

{

*tmp = 100;

}

int main(int argc,char *argv[]) {

int* p = NULL;

p = (int*)malloc(sizeof(int));

fun(p);//值传递

printf("p=%d\n",*p);//成功打印



system("pause");

return 0;

}

 

四、返回堆地址

void *fun()

{

int* tmp = NULL;

tmp = (int*)malloc(sizeof(int));

*tmp = 100;

return tmp;//返回堆区地址,函数调用完毕,不释放

}

int main(int argc,char *argv[]) {

int* p = NULL;

p=fun();//值传递

printf("p=%d\n",*p);

if (p != NULL)

{

free(p);

p = NULL;

}



system("pause");

return 0;

}

五、二级指针

void fun(int **tmp)

{

*tmp = (int*)malloc(sizeof(int));

**tmp = 100;

}



int main(int argc,char *argv[]) {

int* p = NULL;

fun(&p);

printf("*p=%d\n", *p);



system("pause");

return 0;

}

 

欢迎关注公众号:顺便编点程

 

指针复习_函数调用

 

标签:tmp,return,复习,int,fun,100,NULL,指针
From: https://blog.51cto.com/u_15288375/5970870

相关文章

  • 扩展KMP复习小记
    简介KMP大家都耳熟能详,扩展KMP只是一个扩展版而已,字面意思啦!我记得以前打过这个复习小记的,但是不知为何失踪了。KMP与扩展KMP的对比KMP的next[i]表示从1到i的字符串s,前缀......
  • go值接收者和指针接收者的区别
    方法的接收者packagemainimport( "fmt")typePersonstruct{ Namestring Ageint}func(pPerson)walking(){ fmt.Println("我是值类型方法") fmt.Prin......
  • 软件工程复习捏
    第一章软件工程软件危机软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。原因:1软件规模越......
  • 网络服务考点复习
    第一章信息安全测评思想1.信息安全测评需要具备的科学精神:怀疑、批判、创新、求实、协作2.信息安全测评最主要的方法是系统科学/系统工程的方法3.系统科学的三层含义:......
  • 操作系统期末复习
    操作系统期末复习第1章操作系统引论什么是操作系统?操作系统是管理计算机软、硬件资源的软件,控制和协调计算处理活动,提供用户接口操作系统的主要功能处理机管理......
  • Elasticsearch全文检索引擎复习笔记
    Elasticsearch全文检索引擎复习笔记Elasticsearch是一个基于Lucene的搜索引擎。它提供了一个分布式、多租户的全文搜索引擎,能够为应用程序提供实时的、结构化和非结构......
  • 指针
    指针变量的地址内存每一个字节都有一个对应的地址编号,方便计算机快速找到对应内存空间。也可以将地址形象的称为指针假如:inta=6; 系统分配10002~10005地址空间给a,存储......
  • 关于结构体和指针
    typedefstructStu{charname[20];shortage;chartele[12];charsex[5];}Stu;voidPrint(Stu*ps){printf("name:%s\n",ps->name);printf("age:%d\n",(*ps).a......
  • 野指针
     malloc/free野指针:不是NULL指针,是指向“垃圾”内存的指针。“野指针”是很危险的。 出现“野指针”主要有以下原因:指针变量没有被初始化。指针p被free或者delete......
  • Go 快速入门指南 - 变长参数和指针参数
    变长参数在函数的最后一个参数的数据类型之前加上省略号 ​​...​​​ ,表示该参数的数据类型是 ​​变长类型​​​,调用该函数时可以传递任意数量 ​​(0-N)​​......