visual studio2017中,定义控制台应用程序的入口点是什么意思,删除后对程序的运行有什么影响

visual studio2017中,定义控制台应用程序的入口点是什么意思,删除后对程序的运行有什么影响,第1张

scanf("%s %s %d %d %d",p[i].name,p[i].id,&p[i].x,&p[i].y,&p[i].z)

输入改为上句(你没对int类型变量取地址)

改过之后就不会 出内存错误了 (不崩溃了)

但是程序会陷入弊或死循环

简单分析一下: 你的 point e 没有初始化就作为函数QueueTraverse的参数使用了

是不是这里的问题 我不太了解你写的程序的目的 所以不太清楚具体细节

一下是完整程序:

// testing2.cpp : 定义控制台应用程序的入口点。

//

#include<string.h>// 字符串函数头文件

#include<ctype.h>// 字符函数头文件

#include<malloc.h>// malloc()等

#include<limits.h>// INT_MAX等银扮

#include<stdio.h>// 标准输入输出头文件

#include<stdlib.h>// atoi(),exit()

#include<io.h>// eof()

#include<math.h>// 数学函数头文件

#define TRUE 1

#define FALSE 0

#define OK 1

#define ERROR 0

typedef int Status// Status是函数的类型,其值是函数结果状态代码

#define MAX_QSIZE 100 // 最大队列长度+1

#define N 2

typedef int QElemType

typedef struct

{

char name[20]

char id[20]

int x

int y

int z

}point

typedef struct

{ point* base// 初始化的动态分配存储空间

int front// 头指针,若队列不空,指向队列头元素

int rear// 尾指针,若队列不空,指向队列尾元素的下一个位置

}SqQueue

void InitQueue(SqQueue &Q)

{ // 构造一个空队列Q

Q.base=(point *)malloc(MAX_QSIZE *sizeof(point))

if(!Q.base) // 存储分配失败

exit(OVERFLOW)

Q.front=Q.rear=0

}

Status QueueEmpty(SqQueue Q)

{ // 若队列Q为空队列,则返回TRUE;否则返锋卜灶回FALSE

if(Q.front==Q.rear) // 队列空的标志

return TRUE

else

return FALSE

}

Status EnQueue(SqQueue &Q,point e)

{ // 插入元素e为队列Q的新的队尾元素

if((Q.rear+1)%MAX_QSIZE==Q.front) // 队列满

return ERROR

Q.base[Q.rear]=e// 将e插在队尾

Q.rear=(Q.rear+1)%MAX_QSIZE// 队尾指针+1后对MAX_QSIZE取余

return OK

}

int QueueLength(SqQueue Q)

{ // 返回队列Q的元素个数,即队列的长度

return(Q.rear-Q.front+MAX_QSIZE)%MAX_QSIZE

}

int DeQueue(SqQueue &Q,point &e)

{ // 若队列Q不空,则删除Q的队头元素,用e返回其值,并返回OK;否则返回ERROR

if(Q.front==Q.rear) // 队列空

return ERROR

e=Q.base[Q.front]// 将队头元素的值赋给e

Q.front=(Q.front+1)%MAX_QSIZE// 移动队头指针

return OK

}

void QueueTraverse(SqQueue Q)

{ // 从队头到队尾依次对队列Q中每个元素输出

int i=Q.front// i最初指向队头元素

point e=Q.base[i]//把i指向的元素赋给e

while(i!=Q.rear) // i指向队列Q中的元素

{

printf("name:%s id=%s x=%d y=%d z=%d\n",e.name,e.id,e.x,e.y,e.z)// 输出i所指元素

i=(i+1)%MAX_QSIZE// i指向下一个元素

}

printf("\n")

}

int main()

{

int i

SqQueue Q

InitQueue(Q)

point p[N]

for(i=1i<=Ni++)

{

printf("Input the %dth point's name id x y z ",i)

scanf("%s %s %d %d %d",p[i].name,p[i].id,&p[i].x,&p[i].y,&p[i].z)

EnQueue(Q,p[1])

}

QueueTraverse(Q)

system("pause")

return 0

}

你有没有建立工程啊,在VC++

2008中,要运行后缀为cpp的文件,必须在工程下!

文件->新建->项目->(项目迅判类型)Win32->(Visual

Studio已安装的模版)Win32控制台应用程序->(输入项目名称后)->下一步->(附加选项)空项目->完成

在左边的窗口里面,右键->添加->新建项,就可以闭昌困看到可以见了C++文件轿念了.输入完名称,就可以进行输入了,把上面的代码输进去,Ctrl

+

F5,就可以运行了!

如果直接按F5的话,如果程序没有错误,就会跳出,你会看不到结果,通常在测试自己的代码有没有错误时采用.

在Microsoft Visual Studio 2005中,当链接器找不到程序的入口点(执行开始的函数)时,可能会出现“找不到程序输入点”错误。该错误可清孝能由多种因素引起,包括依赖项缺失或不正确、文件损坏或无效,或者项目设置不正确。

要解决此错误,请尝试下列步骤:

检查所有必需的依赖项和库是否包含在项目戚正陪中,并且是最新的。

检查项目中引用的所有文件和库是否有效且未损坏。

检查项目设置是否正确,是否符合程序的要求。特别是,确保在链接器设置中指定了正确的入口点。

清理并重新生成项目,以确保所有文件都是最新的,并且任何潜在的错误都已解决高蠢。

如果错误仍然存在,请尝试将项目设置重置为默认值,然后重新生成项目。

如果这些步骤都不起作用,您可能需要联系Microsoft支持部门或程序开发人员以寻求帮助。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12336465.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存