C++ LANGUAGE TUTORIALS :  POINTERS TO FUNCTIONS...

POINTERS TO FUNCTIONS 

#include "stdio.h"

int add(int a, int b)
{
	return (a+b);
}

int sub(int a, int b)
{
	return (a-b);
}

int calcu(int a, int b, int (*f)(int , int))	
{
       int result;
       result=(*f)(a,b);
       return result;
	
}	


int main()
{
	int m,n;
	m=calcu(7,5,add);
	n=calcu(10,2,sub);

	int (*minus)(int,int)=sub;
	int p;
	p=calcu(20,6,minus);

	printf("m=%d\nn=%d\np=%d\n",m,n,p);

	return 0;

}

/**
OCS101:~/cpl # gcc pointerToFuntions.c 
OCS101:~/cpl # ./a.out 
m=12
n=8
p=14

*/


	


C++ allows operations with pointers to functions. The typical use of this is for passing a function as an argument to another function, since these cannot be passed dereferenced. In order to declare a pointer to a function we have to declare it like the prototype of the function except that the name of the function is enclosed between parentheses () and an asterisk (*) is inserted before the name:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// pointer to functions
#include <iostream>
using namespace std;

int addition (int a, int b)
{ return (a+b); }

int subtraction (int a, int b)
{ return (a-b); }

int operation (int x, int y, int (*functocall)(int,int))
{
  int g;
  g = (*functocall)(x,y);
  return (g);
}

int main ()
{
  int m,n;
  int (*minus)(int,int) = subtraction;

  m = operation (7, 5, addition);
  n = operation (20, m, minus);
  cout <<n;
  return 0;
}
8



In the example, minus is a pointer to a function that has two parameters of type int. It is immediately assigned to point to the function subtraction, all in a single line:

int (* minus)(int,int) = subtraction;

由于我无法直接访问这些链接阅读内容,不过可以为你简单介绍下如何获取这些链接里的信息。 对于网页链接(https://wiki.ros.org/blockly 和 https://docs.luxai.com/docs/tutorials/graphical/studio_ros),可以在浏览器中打开,浏览器会完整加载网页内容,你可以直接阅读网页上的文字、图片、视频等信息。若需要对内容进行保存或进一步分析,还可以使用网页的打印功能将其保存为 PDF 文件,或者使用网页抓取工具(如 Python 的`BeautifulSoup`库)来提取文本内容,以下是使用`BeautifulSoup`提取网页文本内容的示例代码: ```python import requests from bs4 import BeautifulSoup def get_web_content(url): try: response = requests.get(url) response.raise_for_status() soup = BeautifulSoup(response.text, 'html.parser') text = soup.get_text() return text except requests.RequestException as e: print(f"Error fetching the page: {e}") return None url1 = 'https://wiki.ros.org/blockly' url2 = 'https://docs.luxai.com/docs/tutorials/graphical/studio_ros' content1 = get_web_content(url1) content2 = get_web_content(url2) if content1: print("Content from https://wiki.ros.org/blockly:") print(content1) if content2: print("Content from https://docs.luxai.com/docs/tutorials/graphical/studio_ros:") print(content2) ``` 对于 YouTube 视频链接(https://www.youtube.com/watch?v=z762lM7W3w4),可以在浏览器中打开该链接,观看视频获取内容。若需要视频的文字信息,YouTube 通常会提供自动生成的字幕,你可以在视频播放界面点击“CC”按钮开启字幕查看。也可以使用第三方工具(如`youtube-transcript-api`库)来提取视频字幕,以下是使用该库提取字幕的示例代码: ```python from youtube_transcript_api import YouTubeTranscriptApi video_id = 'z762lM7W3w4' try: transcript = YouTubeTranscriptApi.get_transcript(video_id) for entry in transcript: print(entry['text']) except Exception as e: print(f"Error fetching transcript: {e}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值