首页 > 其他分享 >C语言函数和指针的关系之二(未完)

C语言函数和指针的关系之二(未完)

时间:2023-10-11 22:00:41浏览次数:149  
标签:之二 char 地址 str fun world C语言 hello 指针


指针作为函数的返回值

一个函数可以返回整型数据、字符数据、浮点型的数据,也可以返回一个指针.

例 30:
char * fun()
{
char str[100]="hello world";
return str;
}
int main()
{
char *p;
p=fun();
printf("%s\n",p);//
}

C语言函数和指针的关系之二(未完)_数组

//总结:返回地址的时候,地址指向的内存的内容不能释放

如果返回的指针指向的内容已经被释放了,返回这个地址,也没有意义了。

例 31:返回静态局部数组的地址

char * fun(
{
static char str[100]="hello world";
return str;
}
int main()
{
char *p;
p=fun();
printf("%s\n",p);//hello world
}
原因是,静态数组的内容,在函数结束后,亦然存在。

C语言函数和指针的关系之二(未完)_常量区_02

例 32:返回文字常量区的字符串的地址

char * fun()
{
char *str="hello world";
return str;
}
int main()
{
char *p;
p=fun();
printf("%s\n",p);//hello world
}

C语言函数和指针的关系之二(未完)_数组_03

原因是文字常量区的内容,一直存在。

例 33:返回堆内存的地址
char * fun()
{
char *str;
str=(char *)malloc(100);
strcpy(str,"hello world");
return str;
}
int main()
{
char *p;
p=fun();
printf("%s\n",p);//hello world
free(p);
}

C语言函数和指针的关系之二(未完)_数据_04

原因是堆区的内容一直存在,直到 free 才释放。 总结:返回的地址,地址指向的内存的内容得存在,返回的地址才有意义。


标签:之二,char,地址,str,fun,world,C语言,hello,指针
From: https://blog.51cto.com/u_16265376/7816623

相关文章

  • [C语言快速入门] 基础知识和基本数据类型
    [C语言快速入门]基础知识和基本数据类型这里主要的知识点主要来自这两个教学视频:史上最强最细腻的linux嵌入式C语言学习教程【李慧芹老师】_哔哩哔哩_bilibiliC语言基础入门_C3程序猿_哔哩哔哩_bilibili这本书:《CPrimerPlus(第6版)中文版》在本文开篇之前,想简单写一下关于......
  • C++ - 指针
    7指针7.1指针的基本概念指针的作用:可以通过指针间接访问内存 内存编号是从0开始记录的,一般用十六进制数字表示可以利用指针变量保存地址 7.2指针变量的定义和使用指针变量定义语法:数据类型*变量名;示例:intmain(){ //1、指针的定义 inta=10;//定......
  • 仅作笔记用:C语言 将结构体以二进制形式写入文件
    直接以文本文件的方式写入固然也可以,但是如果遇到数据量大的情况,会占用比较多的磁盘空间。这里收集汇总了一下将结构体数据写入二进制文件以及后续读取为结构体的办法。写入二进制文件的话,成员变量就可以直接以例如int、float、double这样的形式存储到磁盘,而不是转换成字符串,这......
  • C语言 - 预处理
    C预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理。我们将把C预处理器(CPreprocessor)简写为CPP。所有的预处理器命令都是以井号(#)开头。它必须是第一个非空字符......
  • C语言 - 预处理器
    C预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理。我们将把C预处理器(CPreprocessor)简写为CPP。所有的预处理器命令都是以井号(#)开头。它必须是第一个非空字符......
  • 复习课15 C语言作业讲解
    一.选择题1.以下哪一项不属于C语言内置的数据类型()A.intB.shortC.structStrD.float答案:C解析:C语言中内置的数据类型有:intshortfloatdoublelongchar等,并不包含C选项中的structStr,故选C2.局部变量的作用域是()A.main()函数内部B.整个程序C.main()函数之前D.局部变量所在地局部......
  • C语言编写的“猜数字“小游戏
    2023年10月7日,今天给大家带来的是用C语言编写的一个猜数字小游戏,使用了循环就可以完成  首先我们需要先做一个简单的目录,这样方便多次使用,增加了游戏的可玩性,看代码: 1voida_catalogue()2{3printf("************************************\n");4prin......
  • C语言 - 函数指针
    1.基本概念函数指针:首先它是一个指针,一个指向函数的指针,在内存空间中存放的是函数的地址; 1.1函数指针的定义形式函数指针的定义:函数的返回值类型(*指针名)(函数的参数列表类型) 1.2函数指针的使用方法#include<stdio.h>//返回两个数中的最大值intmax(inta,int......
  • C语言 - 万能指针
    1.什么是万能指针?万能指针其实就是void*类型的指针,而void*指针一般被称为通用指针或叫泛指针。它是C语言关于纯粹地址的一种约定。当某个指针是void型指针时,所指向的对象不属于任何类型。因为void指针不属于任何类型,不可以对其进行算术运算,比如自增,编译器不知道其自增需要增......
  • 【C语言入门】第十天
    【例题1】1108.IP地址无效化-力扣(LeetCode)char*defangIPaddr(char*address){intlen=strlen(address);char*p=(char*)malloc(sizeof(char)*len+6+1);inti,j;for(i=0,j=0;i<len;i++){if(address[i]=='.'){j+......