C基础知识(5):指针--传递指针给函数&返回指针的函数
下面从3个代码例子分别讲述以下2个知识点:
(1) 传递指针给函数(参数类型为指针)
(2) 返回指针的函数(返回类型为指针)
#include <stdio.h> // 传递指针给函数&返回指针的函数
// (1) 传递一个int型指针给函数,并在函数内改变这个值
void add(int *base, int num);
// (2) 数组作为参数求和
long sum1(int *arr, int size);
long sum2(int *arr, int size);
// (3) 返回一个指向char类型变量的指针(小写字母变成大写字母)
char * upper(char *str); int main() {
int a = ;
add(&a, ); //
printf("%d\n", a);
int arr[] = { , , , , };
long b = sum1(arr, ); //
printf("%d\n", b);
long c = sum2(arr, ); //
printf("%d\n", c);
char str[] = "hello!"; // HELLO!
char *dest;
dest = upper(str);
printf("%s\n", dest);
return ;
} void add(int *base, int num) {
*base = *base + num;
}
long sum1(int *arr, int size) {
int i;
long tmp = ;
for (i = ; i < size; i++) {
tmp = tmp + *arr;
arr++;
}
return tmp;
}
long sum2(int *arr, int size) {
int i;
long tmp = ;
for (i = ; i < size; i++) {
tmp += arr[i];
}
return tmp;
}
char * upper(char *str) {
// 先保留最初的地址。
char *dest;
dest = str;
while (*str != '\0') {
if ('a' <= *str <= 'z') {
*str -= ;
}
str++;
}
return dest;
}
C基础知识(5):指针--传递指针给函数&返回指针的函数的更多相关文章
- 程序员之---C语言细节22(函数返回指针注意事项<悬空指针>、查看进程能够分配的内存大小)
主要内容:函数返回指针注意事项<悬空指针>.查看进程能够分配的内存大小 #include <stdio.h> char * favorite_fruit() { static ...
- C++从函数返回指针
C++ 允许您从函数返回指针.为了做到这点,必须声明一个返回指针的函数,如下所示: int * myFunction() { . . . } 另外,C++ 不支持在函数外返回局部变量的地址,除非定义局 ...
- 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数
[源码下载] 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数 作者:webabcd 介绍速战速决 之 PHP 函数基础 函数参数 函 ...
- 林大妈的JavaScript基础知识(三):JavaScript编程(2)函数
JavaScript是一门函数式的面向对象编程语言.了解函数将会是了解对象创建和操作.原型及原型方法.模块化编程等的重要基础.函数包含一组语句,它的主要功能是代码复用.隐藏信息和组合调用.我们编程就是 ...
- C语言函数返回指针方法
1.将函数内部定义的变量用static修饰 由于static修饰的变量,分配在静态内存区(类似于全局变量区),函数返回时,并不会释放内存,因此可以将要返回的变量加static修饰. int *test ...
- c++ 函数返回指针 及用法
#include<string> #include<iostream> using namespace std; string fun1(int a) { string str ...
- C++基础知识-派生类、调用顺序、访问等级、函数遮蔽
一.派生类的概念 类之间有一种层次关系,有父亲类,有孩子类. 车这个类,当成父类(也叫基类.超类),派生出卡车.轿车,他们属于孩子类(子类.派生类) 继承:有父亲类,有孩子类,构成了层次关系.继承这种 ...
- 函数返回指针类型(strchr函数)
#include<stdio.h> #include<string.h> char *mystrchr(char *s,char c) { while(*s) { if(*s ...
- C语言指针传递详解
传递指针可以让多个函数访问指针所引用的对象,而不用把对象声明为全局可访问,要在某个函数中修改数据,需要用指针传递数据,当数据是需要修改的指针的时候,就要传递指针的指针,传递参数(包括指针)的时候,传递 ...
随机推荐
- Can you answer these queries I SPOJ - GSS1 (线段树维护区间连续最大值/最大连续子段和)
You are given a sequence A[1], A[2], ..., A[N] . ( |A[i]| ≤ 15007 , 1 ≤ N ≤ 50000 ). A query is defi ...
- crc32 cpp Makefile可参考
https://github.com/stbrumme/crc32 # simple Makefile CPP = g++ # files PROGRAM = Crc32Test LIBS = -lr ...
- Tampermonkey油猴脚本管理插件-最强浏览器插件的安装使用全攻略
对于接触过谷歌浏览器插件的“玩家”们来说,应该没有人没听说过Tampermonkey用户脚本管理器,也就是中文所说的“油猴”这个chrome插件了. 油猴号称全商店最强的浏览器插件绝非浪得虚名,一 ...
- Apache代理技术
Apache代理技术 apache代理分为正向代理和反向代理. 正向代理是一个位于客户端和原始服务器之间的服务器, 客户端通过代理服务器访问外部的 web, 需要在客户端的浏览器中设置代理服务器. 反 ...
- 什么是DNS
DNS,或者说域名系统,通常是学习如何配置网站和服务器的一个非常困难的部分.了解 DNS 的工作原理将有助于诊断网络访问的问题,也有助于理解 DNS 系统背后的工作原理. 这篇文章中,我们会讨论一些基 ...
- python 2 和python 3 中的编码对比
在 Python 中,不论是 Python2 还是 Python3 中,总体上说,字符都只有两大类: 通用的 Unicode 字符: (unicode 被编码后的)某种编码类型的字符,比如 UTF-8 ...
- Json中相关注解解释说明
@JsonProperty用法: @JsonProperty 此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,如把trueName属性序列化为name,@JsonProperty(“nam ...
- SSM项目无法解析JSP页面
JSP页面显示标头<%@ page language="java" contentType="text/html; charset=UTF-8" page ...
- ingress部署
# 手动部署 # 部署ingress-nginx 官方地址:https://github.com/kubernetes/ingress-nginx # 参考链接:https://www.jianshu ...
- Maven - Maven Project与Maven Module区别和联系
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/J080624/article/detai ...