首页 > 其他分享 >33. 指针和函数

33. 指针和函数

时间:2024-09-02 14:56:19浏览次数:14  
标签:tmp return 函数 函数参数 33 int 数组名 printf 指针


1 函数形参改变实参的值

#include <stdio.h>

void swap1(int x, int y)
{
	int tmp;
	tmp = x;
	x = y;
	y = tmp;
	printf("x=%d, y=%d\n", x, y);
}
void swap2(int *x, int *y)
{
	int tmp;
	tmp = *x;
	*x = *y;
	*y = tmp;
}
int main()
{
	int a = 3;
	int b = 5;
	swap1(a, b); // 值传递
	printf("a = %d, b = %d\n", a, b);

	a = 3;
	b = 5;
	swap2(&a, &b);	// 地址传递
	printf("a2 = %d, b2=%d\n", a, b);

	return 0;
}

输出结果:

tao@Taoc:~/Desktop/C/7$ ./7.5.1 
x=5, y=3
a = 3, b = 5
a2 = 5, b2=3

2 数组名做函数参数

数组名做函数参数,函数的形参会退化为指针:

#include <stdio.h>

void printArrary(int *a, int n)	
{
	int i = 0;
	for (i = 0; i < n; i++)
	{
		printf("%d, ", a[i]);
	}
	printf("\n");
}

int main()
{
	int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
	int n = sizeof(a) / sizeof(a[0]);

	//数组名做函数参数
	printArrary(a, n); 
	return 0;
}

输出结果:

1, 2, 3, 4, 5, 6, 7, 8, 9,

3 指针做为函数的返回值

#include <stdio.h>

int a = 10;

int *getA()
{
	return &a;
}

int main()
{	
	*(getA()) = 111;
	printf("a = %d\n", a);
	// 输出: a = 111;
	return 0;
}


标签:tmp,return,函数,函数参数,33,int,数组名,printf,指针
From: https://blog.51cto.com/zaishu/11898117

相关文章

  • 35. 字符串处理函数
    1.strcpy()#include<string.h>char*strcpy(char*dest,constchar*src);功能:把src所指向的字符串复制到dest所指向的空间中,'\0’也会拷贝过去参数:dest:目的字符串首地址src:源字符首地址返回值:成功:返回dest字符串的首地址失败:NULL注意:如果参数dest所指的内存空间不够大,可能......
  • 52. C高级-指针强化
    1指针是一种数据类型1.1指针变量指针是一种数据类型,占用内存空间,用来保存内存地址。voidtest01(){ int*p1=0x1234; int***p2=0x1111; printf("p1size:%d\n",sizeof(p1)); printf("p2size:%d\n",sizeof(p2)); //指针是变量,指针本身也占内存空间,指针也可以被赋......
  • 浅谈C# 虚函数和重写
    一、基本介绍        虚函数(VirtualFunction)和重写(Override)是面向对象编程中多态性的重要概念。它们允许子类改变继承自父类的行为。虚函数虚函数是可以在派生类中被重写的函数。在基类中声明虚函数时,使用关键字virtual。这样,派生类可以使用override关键字来提......
  • 20240905_000339 mysql 存储过程 用户自定义变量
    自定义变量的特点一个@符号定义自定变量打印自定变量另一种定义方式查询赋值......
  • C++中不定参数函数的实现方法
    目录一.前言二.代码解析1.模板方式第一种写法第二种写法2.va_list方式三.其他一.前言C++中实现不定参数函数可以采用多种方法,这篇文章讨论不定参数模板和va_list。二.代码解析1.模板方式C++中采用模板来实现不定参数列表,可以有多种编码的方法,这里提供两种方法。......
  • 20240905_010339 mysql 存储过程 局部变量
    ......
  • OpenCV绘图函数(14)图像上绘制文字的函数putText()的使用
    操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:VisualStudioCode编程语言:C++11算法描述在图像上绘制指定的文本字符串。cv::putText函数在图像上绘制指定的文本字符串。无法使用指定字体渲染的符号会被问号(?)替换。关于文本渲染的具体示例可以参考getTextSize函数......
  • OpenCV绘图函数(15)图像上绘制矩形函数 rectangle()的使用
    操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:VisualStudioCode编程语言:C++11算法描述绘制一个简单的、粗的或填充的直立矩形。这个函数cv::rectangle绘制一个矩形轮廓或一个填充的矩形,其两个相对的顶点分别是pt1和pt2。函数原型1voidcv::rectangle( Inpu......
  • ReactJs:使用映射函数后我的父数组得到更新
    在React中,使用映射函数后父数组得到更新是正常的行为。映射函数会创建一个新的数组,其中包含了原始数组中每个元素经过映射操作后的结果。如果你希望在映射函数中修改原始数组,你可以使用forEach方法来遍历数组,并在遍历过程中修改元素。以下是一个示例:constparentArray=[1,2,......
  • 在多线程环境下,如何解决 Java 函数失效的问题?,java 多线程处理数据
    在多线程环境下,Ja函数失效的问题是开发者常常遇到的一个挑战。多线程带来了并发执行的优势,但同时也增加了代码的复杂性,尤其是在涉及共享资源时,如果处理不当,可能会导致函数失效,甚至引发更严重的问题。本文将探讨一些常见的Ja函数失效原因,并提供相应的解决方法。我们需要了解函数失......