c++问题-指针型函数参数不能为非指针型的吗

问题描述

指针型函数参数不能为非指针型的吗

#include

using namespace std;
int * min(int a,int b,int c){
int *p=0;

if(a<b)
p=&a;
else p=&b;
if(*p>c)
p=&c;
return p;

}

int main()
{
int a,b,c;
int *p=0;
cout<<"please input a,b,c:";
cin>>a>>b>>c;
p=min(a,b,c);
cout<<"最小值为:"<<*p<<endl;
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
cout<<"c="<<c<<endl;

return 0;

}

解决方案

能详细描述你的问题么

解决方案二:

三十、组、指针和字符串:指针用作函数参数、指针型函数和函数指针

解决方案三:

 #include <iostream>
using namespace std;
int *min(int a, int b, int c){
    int *p = 0;
    cout << "函数内的a地址: " << &a << endl;
    if(a < b)
        p = &a;
    else
        p = &b;
    if(*p > c)
        p = &c;
    return p;
}

int main()
{
    int a, b, c;
    int *p = 0;
    cout<<"please input a,b,c:
";
    cin >> a >> b >> c;
    cout << "输入的a的地址: " << &a << endl;
    p = min(a, b, c);

    cout<<"最小值为:"<<*p<<endl;
    cout << "p的地址是:" << p << endl;
    cout<< "a=" << a << endl;
    cout<< "b=" << b << endl;
    cout<< "c=" << c << endl;
    return 0;
}

时间: 2024-09-07 13:00:03

c++问题-指针型函数参数不能为非指针型的吗的相关文章

非递归二叉树遍历-c语言中函数指针作为参数与函数的嵌套

问题描述 c语言中函数指针作为参数与函数的嵌套 函数指针作为另一函数的参数和函数的嵌套的区别,感觉都是调用,有什么不一样呢?他们都适用在什么情况下!(我是在学非递归遍历二叉树时看到的) Status Visit(TElemType e){ printf("%cn",e); return OK; } Status InOrderTraverse(BiTree T ,Status(*Visit)(TElemType e)){ SqStack S; InitStack(S); Push(S,

关于c++的中函数指针作为参数的问题

问题描述 关于c++的中函数指针作为参数的问题 函数实现 void swap(int &a, int &b) { int tmp = a; a = b; b = tmp; } 函数使用: int i=1,j=2: swap(i,j): 如上所示,swap函数传递进来的是两个整形变量的地址,有两个问题 1.那么swap的实现里面,为什么直接交换a,b的值就实现了地址交换?难道这里的a,b代表指针吗? 2.使用swap时为什么没有使用swap(&i,&j)? 初学c++,还望大

c语言 二维指针-c语言二维指针作为参数的问题。

问题描述 c语言二维指针作为参数的问题. #include int stringcut(char str, char dest[][50],int num,int lines) /如果这里不加上50会出错*/ { char *temp=str; int k=0; if(strlen(str) ==NULL) { return -1; } for(k=0;k<lines;k++) { strncpy(dest[k],temp,num); temp=temp+num; } return 0; } m

以一个链表指针作参数传入一个函数里,若此时链表为空,则初始化链表,为什么在主函数中不能用?

问题描述 以一个链表指针作参数传入一个函数里,若此时链表为空,则初始化链表,为什么在主函数中不能用? #include using namespace std; typedef struct Node { int age; struct Node* next; }LIST; void addList1(LIST* pHead,int x)//链表结尾加节点 { LIST* pM=new LIST();//新节点 pM->age=x; pM->next=NULL; if(pHead==NULL)

指针数组,数组指针,函数指针,main函数实质,二重指针,函数指针作为参数,泛型函数

 1.指针数组    数组里面的每个元素都是指针.    指针数组的案例如下:    易犯错误: 2.数组指针   归根结底还是指针,只是取*的时候能够取出一整个数组出来. 数组指针:(一个指针指向了数组,一般和二维数组搭配使用). 下面的(p+1)表示的是加过20个字符.   3.函数指针: 在gcc编译的时候增加一些调试信息的方式是: gcc demo.c –g –o app   -g表示增加一些调试信息 objdump –dSsx app > file   将app反汇编,然后重定向到

浅谈关于指针作为参数并改变它的值的问题_C 语言

复制代码 代码如下: #include<stdio.h> int f(int *p){     p = p+1;     return printf("%d\n",*p); } void main(){     int a[]={1,2};     int *p = a;//指针p是首地址     f(p);//调用     printf("%d",*p);//p的值是不会改变的 } 结果:21Press any key to continue 复制代码

调用C++dll,需要传入一个函数指针,函数参数含有数组指针,用于传回数据,怎么老说我访问内存非法呀.

问题描述 C++dll代码回掉函数类型:voidcallback(BYTE*data,intnlen)//DLL设置回调函数voidSetCallBackFunc(CALL_BACK_FUNCcallback){m_callback=callback;}//dll调用回掉函数向C#传回数据voidStartDll(){BYTEbtData[100];for(bytei=0;i<100;i++){btData[i]=i;}m_callback(btData,100);//将数据通过回掉函数传回C#

Linux中断内核编程

转自:http://blog.csdn.net/tigerjb/article/details/6069516 在前面分析了中断的基本原理后,就可以写一个内核中断程序来体验以下,也可以借此程序继续深入来了解内核中断的执行过程 一.内核中断程序 : 我们还是来看一看成程序: 在看程序之前,要熟悉如何进行模块编程,和了解module_pararm()的用法.如果不熟悉的话请大家看,module_param()的学习 和Linux内核模块编程,在此不作解释. 1.程序interrupt.c [c-sh

C++非类型模板参数

对 于函数模板与类模板,模板参数并不局限于类型,普通值也可以作为模板参数.在基于类型参数的模板中,你定义了一些具体的细节来加以确定代码,直到代码被调 用时这些细节才被真正的确定.但是在这里,我们面对的是这些细节是值,而不是类型,当要使用基于值的模板时,必须显式地指定这些值,才能够对模板进行实例 化.  本文地址:http://www.cnblogs.com/archimedes/p/cpp-template-type.html,转载请注明源地址. 在上篇文章(C++类模板)中我们介绍了一个sta