c语言指针例题及详解(在c语言中,指针在函数中是如何使用的)

c语言指针例题及详解,原文标题:C语言指针知识点(二):指针在函数的输入、输出时 的性质。主调函数可以把栈区、堆区、全局区的数据地址传给被调函

c语言指针例题及详解,原文标题:C语言指针知识点(二):指针在函数的输入、输出时 的性质。

主调函数可以把栈区、堆区、全局区的数据地址传给被调函数;被调函数只能返回堆区和全局区的数据及地址。指针作为函数的传入参数,由主调函数分配内存;指针作为函数的输出时,由被调函数分配内存。如果想通过形参改变实参的内容,必须地址传递(C中,C 中还可以通过引用的方式)。

#include "stdafx.h"#include <iostream>void fun1(char * s){ strcpy_s(s,sizeof("lemon1"), "lemon1");//给指针所指区域拷贝字符串常量}void fun2(char * s){ //strcpy_s(s, sizeof("lemon2"), "lemon2");//给指针所指区域拷贝字符串常量, //但主调函数未分配内存,出错}void fun3(char **s, int *n){ char *p = (char *)malloc(50);//定义一个指针p,指向堆区,分配其50字节大小 strcpy_s(p, sizeof("lemon3"), "lemon3");////给指针p所指区域拷贝字符串常量 *s = p;//将指针p的地址值赋给形参,改变的是实参的值 *n = strlen(p);//将长度值赋给形参所指向位置,改变实参的值}char * fun4(){ char *p = "lemon4";//常量区字符串地址赋给p return p;//返回p的值(地址值)}int main(){ system("color 02"); //1.主调函数分配指针指向的内存,传入被调函数 char str1[50] = { 0 };//定义一个字符数组,即字符串 fun1(str1);//调用函数,传入指针 printf("str1:%sn", str1);//输出字符串 //2.主调函数未分配指针指向的内存,传入被调函数,结果出错 char *str2 = NULL;//定义一个指针,并初始化,但未分配内存 fun2(str2);//调用函数,传入指针 if (str2 != NULL) { printf("str2:%sn", str2); } //3.主调函数定义指针,传入被调函数,被调函数分配内存并输出 char *str3 = NULL;//定义一个指针,并初始化,但未分配内存 int len = 0;//定义字符串长度,初始化为0 fun3(&str3,&len);//调用函数,传入指针 if (str3 != NULL) { printf("str3:%stlen:%dn", str3,len);//输出字符串 free(str3);//输出后释放堆区内存 str3=NULL; } //4.将2做点修改,主调函数未分配指针指向的内存,传入被调函数, //被调函数分配内存,返回指针 char *str4 = NULL;//定义一个指针,并初始化,但未分配内存 str4=fun4();//调用函数,函数返回值(地址)赋给str4 if (str4 != NULL) { printf("str4:%sn", str4);//输出字符串 } printf("n"); system("pause"); return 0;}

c语言指针例题及详解(在c语言中,指针在函数中是如何使用的)c语言指针例题及详解(在c语言中,指针在函数中是如何使用的)c语言指针例题及详解(在c语言中,指针在函数中是如何使用的)

本文《c语言指针例题及详解(在c语言中,指针在函数中是如何使用的)》由网赚联盟( wangzhuan.org.cn )整理或原创,感谢您的阅读。

随机文章

SEO小小课堂网
搜素引擎算法
关键词排名优化
网站内容优化
GEO培训
SEO小小课堂网
SEO教程
友情链接交换

百度搜索“网赚联盟”即可找到本站,微信搜索“小小课堂网”关注小小课堂网公众号。网赚联盟( wangzhuan.org.cn )欢迎用户投稿,发布者:Lemon1号,文章版权归作者所有,投稿文章不代表网赚联盟立场,中二少年发布为网赚联盟原创文章,转载请注明出处:https://wangzhuan.org.cn/566776.html

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注