#include "pch.h"
#include

int main()
{
int * minp(int *, int *);
int * min(int x, int y);
int a, b, *p,*o;
scanf_s("%d,%d",&a,&b);
p = min(a,b);
printf("%d", *p);
o=minp(&a, &b);
printf("%d", *o);

}
int * min(int x, int y)
{
if (x < y)return(&x);
else return(&y);
}
int * minp(int *x, int *y)
{
int * q;
q = *x < *y ? x:y;
return(q);
}

3个回答

``````// Q760646.cpp : This file contains the 'main' function. Program execution begins and ends there.
//

#include <iostream>

#include <stdio.h>

int main()
{
//int* minp(int*, int*);
void min(int x, int y, int* p);
int a, b, * p, * o;
scanf_s("%d,%d", &a, &b);
int p1;
min(a, b, &p1);
printf("%d", p1);
//o = minp(&a, &b);
//printf("%d", *o);

}
void min(int x, int y, int *p)
{
if (x < y) *p = x;
else *p = y;
}
//int* minp(int* x, int* y)
//{
//  int* q;
//  q = *x < *y ? x : y;
//  return(q);
//}
``````

int * minp(int *, int *);
int * min(int x, int y)

int * min(int ,int) 这个int * 不是函数指针，只是返回值是指针类型，我按照你的代码敲了一遍，只有scanf_s 改成了scanf ，一个一个输入，

s11811247 补充一点，盲猜你scanf_s输入数值的时候格式不对，导致b没有被赋值，所以你的返回值就是一个未被初始化的变量地址，数值也就是很大了

char * my_strlwr(char * str) {  if(str == NULL)  return NULL;  char * pStr = str;  for(; *pStr != '\0'; pStr++)  {  if(*pStr >= 'A' && *pStr <= 'Z')  *pStr += 'a' - 'A';  }  return str; } int main(void) {  char sz_buf[100] = "Hello World";  char* sz_buffer; sz_buffer = my_strlwr(sz_buf);//这句就报错了,说是const char *与char* 类型不匹配  printf("sz_buf = %s\n", sz_buf);  printf("sz_buffer = %s\n", sz_buffer);  return 0; } ![图片](https://img-ask.csdn.net/upload/201708/06/1501991080_858867.jpg)

#include <iostream> using namespace std; class example { public: example() { num = new int; *num = 10; cout<<"num = "<<*num<<endl; cout<<"构造"<<endl; } ~example() { cout<<"析构"<<endl; delete num; } void pingfang() { *num *= *num; } void print() { cout<<*num<<endl; } private: int *num; }; example & diaoyong1() { example * p = new example; p->pingfang(); return *p; } example * diaoyong2() { example * p = new example; p->pingfang(); return p; } int main(void) { example & e1 = diaoyong1(); e1.print(); delete &e1; example * ptr = diaoyong2(); ptr->print(); delete ptr; getchar(); return 0; } char *&alloc(){ char *va = new char [100]; return va;} 对于这样的程序 执行过程为 进入函数alloc 为变量va分配内存 假设为0x12345678 大小为四个字节 (32位机指针) 执行new操作 在内存0x12345678地址存入申请到的内存地址 假设为0x45670abc 也就是说 *(0x12345678)=0x45670abc 以上部分应该很好理解 然后返回va 也就是返回上一层一个值 这个值不可能是悬空的 它需要一个地址来存 由于是引用返回，所以返回的地址实际上就是变量va的地址0x12345678 退出函数 释放临时变量 包括va的地址0x12345678 返回到主调函数，使用返回值 比如赋值 a=alloc(); 相当于执行操作 a=*(0x12345678) 注意 在上一步 这个地址已经被释放了 所以当前这个地址存的是什么东西是不确定的 可能还是0x45670abc 也可能已经有了变化 这样a的值就不一定是你需要的了 结果也就可能是错的 关键在于退出函数 释放内存 使用内存这步 先释放 后使用 于是出错 如果是全局/静态变量 自然不会有这个问题 因为内存依旧被原来变量占用 类似引用做参数也是同样的效果 example & diaoyong1() { example * p = new example; p->pingfang(); return *p; } example * diaoyong2() { example * p = new example; p->pingfang(); return p; } 我想问上面的两个函数有什么不同？函数返回值到底是怎么实现的？如果返回一个指针是不是就是将储存这个指针的地址返回回来，函数怎么返回和左值是什么类型是不是有关系?局部变量的指针在函数结束的时候被释放是不是储存这个指针的地址释放了这个指针？ example & e1 = diaoyong1(); example * e1 = diaoyong1(); //这两个本质上有什么区别，第一个为什么不会造成内存的泄露？

C++小白一枚，遇到一个问题，查了很多资料还是没有想明白。 书上都说C++在重载赋值操作符（=）时，应该返回一个引用，这是因为能够实现链式赋值：比如a=b=c=1 但是，返回一个临时变量，会出现什么问题呢？ 比如 class A{...};中有一个赋值操作符重载，返回A，原型如下： A operator=(const A &); 定义了几个A类的变量 A a,b,c,d; 然后让a有了完整的成员。执行如下表达式： b=c=d=a <=> b=(c=(d=a)) 当d=a完成后，返回一个临时变量，然后c会调用赋值操作符重载的函数，把内部成员进行拷贝，执行结束后，c获得了d相同的内容，然后（d=a）中返回的d的临时变量 释放了，然后把c的临时变量给b，以此类推。 感觉这个过程也不会有什么问题呀。 为什么一定要返回引用呢？ 我的想法：是不是因为返回临时变量，会需要一个临时变量的空间，如果是ADT或UDT，可能造成内存浪费或者效率低下？但是这个方法没有语法层面上的问题？ 除此以外：如果有一个移动赋值函数，在链式赋值第二次开始，是不是会调用该移动赋值函数呢？这种情况下，对内存空间和效率有影响吗？

![图片说明](https://img-ask.csdn.net/upload/201703/13/1489375726_998219.png) 创建了四个结构体，并为其分配了内存空间，删除delete的代码后算法可以正常运行，加入delete后运行终止，出现上图的报错，希望有人能帮我看一下，非常感谢大家。 ``` #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <iomanip> #include <math.h> #include <ctime> using namespace std; struct POINT3D //顶点的数据结构 { float x; float y; float z; }; struct TRIANGLE //三角面片 { POINT3D *p_pnt[3]; }; struct PART //部件实时数据结构/添加 { char* file; char* name; int tri_num; int p_num; float T[4][4]; TRIANGLE *p_tri[3000]; }; struct PART_0 //部件初始数据结构/添加 { POINT3D *p_pnt_0[25100]; }; PART Tool[10]; PART_0 Tool_0[10]; bool ifbin(const char *fname) //判断是否二进制文件 { bool bin = false; //默认文本文件 FILE *fp; fp = fopen(fname, "r"); if (fp == NULL) { return false; } char s[256]; fgets(s, 256, fp);//读一行 char *q = "solid binary"; int i; for (i = 0; i<12; i++) { if (s[i] != q[i]) break; } if (i<5 || i == 12) { bin = true; //是二进制文件 } else bin = false; fclose(fp); return bin; } bool compare(const char *s, const char *q, int n) { int i = 0; while (i<n) { if (q[i++] != s[i++]) return false; } if (i = n && (s[n] - ' ' == 0 || s[n] - '\n' == 0 || s[n] == NULL)) return true; else return false; } int Triangle_num(char* fname) { FILE *fp; if ((fp = fopen(fname, "r ")) == NULL) { printf("Can't open file"); exit(1); } int npoint = 0; //点个数 int count = 0; //三角面片个数 while (!feof(fp)) //feof()函数为判断文件是否结束，C语言 { char f[256]; fgets(f, 256, fp); if (compare(strtok(f, " "), "vertex ", 6)) { if (++npoint == 3) { count++; npoint = 0; } } } fclose(fp); return count; } void read_stl(int t, const char *filename, int n_triangle)//部件，文件名，三角面片个数 { bool bin; int n_T = 0, n_P = 0; bin = ifbin(filename); if (bin == false) //如果是文本文件 { //n_triangle = Triangle_num(char* filename); //计算三角面片数 //t_p3d *t_p = new t_p3d[n_triangle * 3];//t_p指向点面结构 FILE *fp; if ((fp = fopen(filename, "r")) == NULL) { printf("Can 't open file "); exit(1); } float me[3];//存储顶点的三个坐标值 //int count = 0;//三角面片个数 int count = 0; while (!feof(fp)) { char f[256]; fgets(f, 256, fp);//读一行 if (compare(strtok(f, " "), "vertex ", 6))//以点开始，才能读点 { for (int h = 0; h<3; h++) { me[h] = atof(strtok(NULL, " ")); } (*(*Tool[t].p_tri[n_T]).p_pnt[n_P]).x = (double)me[0]; (*(*Tool[t].p_tri[n_T]).p_pnt[n_P]).y = (double)me[1]; (*(*Tool[t].p_tri[n_T]).p_pnt[n_P]).z = (double)me[2]; (*Tool_0[t].p_pnt_0[count]).x = (double)me[0]; (*Tool_0[t].p_pnt_0[count]).y = (double)me[1]; (*Tool_0[t].p_pnt_0[count]).z = (double)me[2]; count++; if (n_P == 2) //满三个点，三角面片号加1 { n_T++; n_P = 0; } else n_P++; } } fclose(fp); //check(n_pnt, p_pnt, p_pnt0,n_triangle, p_TRIANGLE, t_p,pt1,pt0);//去除冗余点 //delete[] t_p; } } void main() { for (int i = 0; i < 10; i++) { Tool[i].file = new char[1024]; Tool[i].name = new char[1024]; for (int j = 0; j < 3000; j++) { Tool[i].p_tri[j] = new TRIANGLE; for (int k = 0; k < 3; k++) { Tool[i].p_tri[j]->p_pnt[k] = new POINT3D; } } } for (int p = 0; p < 10; p++)//分配Tool_0内存 { for (int q = 0; q < 25100; q++) { Tool_0[p].p_pnt_0[q] = new POINT3D; } } Tool[0].file = "C:\\Users\\Huan\\Desktop\\stl\\12workpiece.STL"; Tool[0].name = "GJ"; Tool[1].file = "C:\\Users\\Huan\\Desktop\\stl\\M1.STL"; Tool[1].name = "M1"; Tool[2].file = "C:\\Users\\Huan\\Desktop\\stl\\M2.STL"; Tool[2].name = "M2"; Tool[3].file = "C:\\Users\\Huan\\Desktop\\stl\\11tool.STL"; Tool[3].name = "M3"; Tool[4].file = "C:\\Users\\Huan\\Desktop\\stl\\D1.STL"; Tool[4].name = "D1"; Tool[5].file = "C:\\Users\\Huan\\Desktop\\stl\\D2.STL"; Tool[5].name = "D2"; Tool[6].file = "C:\\Users\\Huan\\Desktop\\stl\\F1.STL"; Tool[6].name = "F1"; Tool[7].file = "C:\\Users\\Huan\\Desktop\\stl\\F2.STL"; Tool[7].name = "F2"; Tool[8].file = "C:\\Users\\Huan\\Desktop\\stl\\S1.STL"; Tool[8].name = "S1"; Tool[9].file = "C:\\Users\\Huan\\Desktop\\stl\\S2.STL"; Tool[9].name = "S2"; for (int k = 0; k < 10; k++)//计算三角面片数和点数 { Tool[k].tri_num = Triangle_num(Tool[k].file); Tool[k].p_num = Tool[k].tri_num * 3; } for (int i = 0; i < 10; i++)//读取STL文件 { read_stl(i, Tool[i].file, Tool[i].tri_num);//部件，文件名，三角面片个数 } for (int p = 0; p < 10; p++)//删除内存，加入这一段代码之后程序终止 { for (int q = 0; q < 25100; q++) { delete Tool_0[p].p_pnt_0[q]; } } for (int i = 0; i < 10; i++) { for (int j = 0; j < 3000; j++) { for (int k = 0; k < 3; k++) { delete Tool[i].p_tri[j]->p_pnt[k]; } delete Tool[i].p_tri[j]; } delete[] Tool[i].file; delete[] Tool[i].name; } system("pause"); } ```

VS2010中C指针类型转换

const int func() { int j = 8; return j; } int main() {int i = 5 ;i = func(); } 为什么可以翻译通过呢？

C语言中指针作为形参传递数据的问题

main2.py # -*- coding: utf-8 -*- import wx import wx.wizard as wiz import p1 import p2 import p3 import p4 import p5 class MyApp(wx.App): def __init__(self): wx.App.__init__(self) self.appWizard = wiz.Wizard(None, -1, "大都市动态更新向导".decode('utf-8')) self.pageCount = 5 self.InitPages() self.setPagesLink() self.runWizard() def InitPages(self): self.pagesList = list() self.pageFactory = PageFactory() for p in "p1,p2,p3,p4,p5".split(","): self.pagesList.append(self.pageFactory.createPages(p,self.appWizard)) def setPagesLink(self): for i in range(self.pageCount): if 0 < i < self.pageCount: self.pagesList[i-1].SetNext(self.pagesList[i]) self.pagesList[i].SetPrev(self.pagesList[i-1]) def runWizard(self): self.appWizard.FitToPage(self.pagesList[0]) self.appWizard.RunWizard(self.pagesList[0]) self.appWizard.Destroy() class PageFactory(): def createPages(self,pageStr,appWizard): if pageStr == "p1": return p1.p1(appWizard) elif pageStr == "p2": return p2.p2(appWizard) elif pageStr == "p3": return p3.p3(appWizard) elif pageStr == "p4": return p4.p4(appWizard) elif pageStr == "p5": return p5.p5(appWizard) if __name__ == "__main__": app = MyApp() app.MainLoop() ************************************************************************************************************ p1.py # -*- coding: utf-8 -*- import wx import wx.wizard as wiz import wx.lib.filebrowsebutton as filebrowse import os import sys class p1(wiz.WizardPageSimple): configUrl = "" logUrl = "" def __init__(self,appWizard): wiz.WizardPageSimple.__init__(self, appWizard) self.initViews(); def initViews(self): #页标题和分界线 self.pageTitle = wx.StaticText(self,label="设置 Config.ini 和 Log.txt 路径".decode('utf-8')) self.staline = wx.StaticLine(self) #提示字，输入框1，两个按钮 self.confFileUrl = wx.StaticText(self,label="请输入Config.ini的路径".decode('utf-8')) self.fbbh = filebrowse.FileBrowseButtonWithHistory(self,size=(450,-1),changeCallback = self.fbbhCallback) self.fbbh.callCallback = False self.fbbh.SetHistory(["this is history"]) self.fbbhEBtn = wx.Button(self,-1,"打开文件".decode('utf-8')) self.fbbhDBtn = wx.Button(self,-1,"显示".decode('utf-8')) self.Bind(wx.EVT_BUTTON, self.OnClickEbtn1, self.fbbhEBtn) self.Bind(wx.EVT_BUTTON, self.OnClickDbtn1, self.fbbhDBtn) #提示字，输入框2，两个按钮 self.logFileUrl = wx.StaticText(self,label="请输入Log.txt的路径".decode('utf-8')) self.fbbh2 = filebrowse.FileBrowseButtonWithHistory(self,size=(450,-1),changeCallback = self.fbbhCallback2) self.fbbh2.callCallback = False self.fbbh2.SetHistory(["this is history"]) self.fbbhEBtn2 = wx.Button(self,-1,"打开文件".decode('utf-8')) self.fbbhDBtn2 = wx.Button(self,-1,"显示".decode('utf-8')) self.Bind(wx.EVT_BUTTON, self.OnClickEbtn2, self.fbbhEBtn) self.Bind(wx.EVT_BUTTON, self.OnClickDbtn2, self.fbbhDBtn) #Sizer布局 mainSizer = wx.BoxSizer(wx.VERTICAL) topSizer = wx.BoxSizer(wx.VERTICAL) midSizer = wx.BoxSizer(wx.VERTICAL) mid2Sizer = wx.BoxSizer(wx.HORIZONTAL) mid3Sizer = wx.BoxSizer(wx.HORIZONTAL) topSizer.Add(self.pageTitle,flag=wx.ALIGN_CENTER_HORIZONTAL|wx.BOTTOM,border=10) topSizer.Add(wx.StaticLine(self),flag=wx.GROW) mainSizer.Add(topSizer,flag=wx.EXPAND) midSizer.Add(self.confFileUrl) midSizer.Add(self.fbbh) mid2Sizer.Add(self.fbbhEBtn,flag=wx.RIGHT,border=10) mid2Sizer.Add(self.fbbhDBtn) midSizer.Add(mid2Sizer,flag=wx.BOTTOM|wx.CENTER,border=20) midSizer.Add(self.logFileUrl) midSizer.Add(self.fbbh2) mid3Sizer.Add(self.fbbhEBtn2,flag=wx.RIGHT,border=10) mid3Sizer.Add(self.fbbhDBtn2) midSizer.Add(mid3Sizer,flag=wx.CENTER,border=20) mainSizer.Add(midSizer,flag=wx.EXPAND|wx.TOP,border=10) self.SetSizer(mainSizer) def fbbhCallback(self, evt): if hasattr(self, 'fbbh'): value = evt.GetString() if not value: return print value self.configUrl = value history = self.fbbh.GetHistory() if value not in history: history.append(value) self.fbbh.SetHistory(history) self.fbbh.GetHistoryControl().SetStringSelection(value) def fbbhCallback2(self, evt): if hasattr(self, 'fbbh2'): value = evt.GetString() if not value: return print value self.logUrl = value history = self.fbbh2.GetHistory() if value not in history: history.append(value) self.fbbh2.SetHistory(history) self.fbbh2.GetHistoryControl().SetStringSelection(value) def OnClickEbtn1(self,evt): sys.exit() def OnClickDbtn1(self,evt): pass def OnClickEbtn2(self,evt): pass def OnClickDbtn2(self,evt): pass 程序无法进入 def OnClickEbtn1(self,evt)回调函数，请熟悉wxpython的大神帮忙解决，谢谢

c语言课程设计：统计工资

2.1 设计题目 本课程设计要求设计一个公司职员的数据结构，并使用结构指针数组存储职员信息，统计公司员工工资总额和平均工资。 2.2 设计要求 设计要求实现如下功能： （1）使用结构指针数组设计一个公司职员的数据结构，使用下述的结构定义： typedef struct employee{ int age; char *name; double salary; }*PEMP; （2）在主函数里构造一个指针数组company，用来存放职工信息。 （3）设计一个update函数，用来给company赋值。 函数update(company, id, age, name, salary)的四个参数为： company: 结构指针数组 id: company的下标 age: 年龄，整数类型 salary: 薪水，实数 （4）设计一个readin函数，直接采用调用update函数的方式进行赋值。例如：update(company, 2, 30, “LI MING”, 3000.0)； （5）编写total函数对工资求和。 这个函数应该能对全体职工和某一年龄段的职工的工资求和。 （6）编写mean函数求平均工资。 这个函数应该能对全体职工和大于某一年龄段的职工的工资求和并计算相应的平均值。 2.3 算法分析 为了简单起见，假设在主函数main中定义结构数组指针如下： PEMP company[num]; 下面说明几个函数的设计问题： （1）readin函数 数组company属于main函数，它是不可见的，所以必须作为readin函数的参数。因为参数传递是传地址的方式，所以不需要返回值。以数据为例，这个函数的定义和使用方法如下： void reading(company) PEMP company[]; { update(company, 2, 23, “张文”，3000.0); update(company, 1, 33, “王微”，2400.0); update(company, 2, 23, “李小”，3055.0); } （2）total函数 它也必须以数组company作为参数，而且要返回工资总额。可将它的原型设计为： double total (PEMP *); total函数应该允许输入年龄范围，如果年龄不合理，应该允许重新输入。对输入数据进行判别，确保无误再进行计算。 for( ; ; ) { printf(“输入年龄范围”)； scanf(“%d%d”,&age1, &age2) if(age1>age2) { i=age1; age1=age2; age2=i; } if((age1>=0)&&(age2<=100)&&(age2>=0)&&(age2<=100)&&(age2>age1)) break; } （3）mean函数 mean函数也必须以数组company作为参数，而且要返回平均工资。将它的函数原型设计为： double mean (PEMP *); mean函数应该允许输入年龄范围。对输入字符进行判别，确保无误再进行计算，注意允许大小写。 printf(“求某一年龄段以上的职工的平均工资\n”)； printf(“默认是全体职工的平均工资，要改变计算方式请输入Y/y\n”)； getchar(); ch=getchar(); if(ch==’Y’||ch=’y’) { printf(“age:”); scanf(“%d”,&age); } (4)申请内存 在update函数中，需要申请内存空间。 PEMP emp If((emp=(PEMP) malloc (sizeof(struct employee)))==NULL)return; 注意emp是指针，所以要使用sizeof(struct employee)。

“亚马逊丛林里的蝴蝶扇动几下翅膀就可能引起两周后美国德州的一次飓风……” 这句人人皆知的话最初用来描述非线性系统中微小参数的变化所引起的系统极大变化。 而在更长的时间尺度内，我们所生活的这个世界就是这样一个异常复杂的非线性系统…… 水泥、穹顶、透视——关于时间与技艺的蝴蝶效应 公元前3000年，古埃及人将尼罗河中挖出的泥浆与纳特龙盐湖中的矿物盐混合，再掺入煅烧石灰石制成的石灰，由此得来了人...

C++11：一些微小的变化（新的数据类型、template表达式内的空格、nullptr、std::nullptr_t）

HashMap底层实现原理，红黑树，B+树，B树的结构原理 Spring的AOP和IOC是什么？它们常见的使用场景有哪些？Spring事务，事务的属性，传播行为，数据库隔离级别 Spring和SpringMVC，MyBatis以及SpringBoot的注解分别有哪些？SpringMVC的工作原理，SpringBoot框架的优点，MyBatis框架的优点 SpringCould组件有哪些，他们...

【阿里P6面经】二本，curd两年，疯狂复习，拿下阿里offer

《经典算法案例》01-08：如何使用质数设计扫雷（Minesweeper）游戏

《Oracle Java SE编程自学与面试指南》最佳学习路线图（2020最新版）