小编Lig*_*ica的帖子

为什么解除引用未初始化的指针不会崩溃?

我试着运行这个代码,它只用一个警告('a'可能在这个函数中未初始化......)构建,但在运行时我的计算机崩溃并只显示"Hello world!".

#include <iostream>
using namespace std;
int main()
{
 cout << "Hello world!" << endl;
 int p=20;
 int *a;
 *a=p;
 cout << *a << endl;
 cout << &p << endl;
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是当我省略这部分时:

cout << &p << endl;
Run Code Online (Sandbox Code Playgroud)

我将再次发出相同的警告,但代码正常工作.任何人都可以解释发生了什么?

谢谢之前.

c++ pointers

-2
推荐指数
1
解决办法
120
查看次数

不能将数组运算符用于基于数组的指针(读取访问冲突)

基本上我想要实现的是使用指针,避免new关键字来获得与其他语言相同的复制行为(=如果我们谈论对象,运算符会将右操作数的 ref 分配给左操作数,类似于shared_ptr应该提供)。如果我不使用数组运算符,我要展示的内容似乎有效[]。为什么会发生这种情况,我该如何解决?

// Declaration way before
std::vector<int>* test;

test = &std::vector<int>();
(*test)[1] = 0;
Run Code Online (Sandbox Code Playgroud)
// Declaration way before
std::map<std::string, int>* test;

test = &std::map<std::string, int>();
(*test)["a"] = 0;
Run Code Online (Sandbox Code Playgroud)

错误发生在两者的最后一行。

c++ pointers reference operators memory-address

-2
推荐指数
1
解决办法
89
查看次数

如果声明错误!

我收到以下错误:

错误:没有匹配函数来调用'max(int&,int&,int&,int&)'

我的代码是:

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <time.h>
#include <string>
#include <cstring>
#include <stdlib.h>
#include <stdio.h>

using namespace std;

int main()
{
    srand(time(NULL));
    int g1l= rand()%5;
    int g1r= rand()%5;
    int g2l= rand()%5;
    int g2r= rand()%5;
    int g3l= rand()%5;
    int g3r= rand()%5;
    int g4l= rand()%5;
    int g4r= rand()%5;
    int g5l= rand()%5;
    int g5r= rand()%5;
    int g6l= rand()%5;
    int g6r= rand()%5;
    int manudw = 0;
    int manudd = 0;
    int manudl = 0;
    int lagalw = 0;
    int lagald …
Run Code Online (Sandbox Code Playgroud)

c++ if-statement

-3
推荐指数
1
解决办法
195
查看次数

从数据库中获取数据并显示奇数或偶数ID号

我有一组包含信息的表格.我为每一行设置了id(大约30行信息).有什么方法可以告诉PHP只能在网页上显示奇数或偶数ID号?

我想在两列中显示它们:左边是奇数id的行,右边是偶数id的行.

该代码将如何编写?或..谁能告诉我一些资料或教程要阅读?

php

-3
推荐指数
1
解决办法
1923
查看次数

if else语句的问题

不知怎的,我的代码执行既ifelse代码!

$q = "SELECT id FROM ".TBL_VOTECOUNT." WHERE voteid = '$mainid' AND voterid = '$_SESSION[id]'";
$result = $database->query($q);
if (mysql_num_rows($result) > 0) {

}
else {

}
Run Code Online (Sandbox Code Playgroud)

代码$database->query

function query($query){
   return mysql_query($query, $this->connection);
}
Run Code Online (Sandbox Code Playgroud)

有没有理由为什么这个代码应该运行ifelse块?

php mysql

-3
推荐指数
1
解决办法
135
查看次数

不能使用函数返回值

我只是不明白问题在哪里,但这里是错误:

致命错误:无法在第70行的D:\ wamp\www\system\classes\database.class.php中的写入上下文中使用函数返回值

码:

public function query($sql) {
        if(!is_string() or empty(trim($sql))) {
            throw new Exception('No sql statement was entered.');
        }

        $query = @mysql_query($sql);

        if(!$query) {
            throw new Exception('Query could not be executed because of an error: [#' . mysql_errno() . '] - ' . mysql_error());
        }

        return $query;
    }
Run Code Online (Sandbox Code Playgroud)

第70行:

 if(!is_string() or empty(trim($sql))) {
Run Code Online (Sandbox Code Playgroud)

php mysql sql mysqli

-3
推荐指数
1
解决办法
422
查看次数

我应该使用public $ var还是应该使用__construct()?

我是PHP OOP的新手,我认为public $var并且__construct()完全相同.有什么不同?我应该使用哪一个?

php

-3
推荐指数
1
解决办法
81
查看次数

继续增加C++的数组大小

我是C++的新手,我试图让用户继续将双打输入数组,当用户输入-1时程序停止.我的代码有效,但当12个项目添加到数组时,我得到以下错误:

***glibc检测到***./exercise2:双重免费或损坏(输出):0x00000000010aa070***
======= Backtrace:=========

和:

中止(核心倾倒)

这是我的代码:

int main(){
    int size=5;
    int i=0;
    double *numbers = new double[size];
    cout<<"Enter your double:"<<endl;

    while(1){
    double *numbers2=new double[size];

    cin>>numbers[i];

    if(i>=size-1){
        size=size*2;
        memcpy(&numbers2, &numbers, size);
        delete[]numbers;
    numbers=numbers2;
    }

    if(numbers[i]==-1){
        break;
    }
    cout<<numbers[i];
        i++;
    } 
}
Run Code Online (Sandbox Code Playgroud)

c++ arrays

-3
推荐指数
1
解决办法
2327
查看次数

新的C11标准是否支持lambdas?

我们知道C++ 11确实有lambda但是C11吗?

c lambda standards

-3
推荐指数
1
解决办法
186
查看次数

定义新类型并重载其运算符

是否可以创建一个类型(比如说degrees)并为它定义特定的运算符?如:=, +, *, -, /, +=, *=, -=, /=.

我想知道这是因为我需要为我的一个程序使用度数而我不想使用一个float对象,因为使用它degrees a; a.value = 120; a.value = b.value + a.value;是一个简单的冗余degrees a = 120; a = b+a;.

现在我为什么不使用:

typedef float degrees;
Run Code Online (Sandbox Code Playgroud)

?好吧,因为我还需要一件事.当我写作

degrees a;
a = 120;
a += 300;
Run Code Online (Sandbox Code Playgroud)

a应该等于60(420-360),因为我真的不需要a = 6150什么时候能有a = 30相同的效果.所以我会重载这些运算符以保持0到360之间的值.

可能吗?如果是这样,怎么样?

c++ operator-overloading

-3
推荐指数
2
解决办法
192
查看次数