小编Que*_*tin的帖子

当我打电话给我的功能时,什么都没发生?

我正在尝试使用两个char参数来制作摇滚,纸张,剪刀游戏的功能,其中第一个参数代表用户选择的摇滚,纸张或剪刀.第二个参数代表游戏的结果,胜利,失败或平局.但是,当我试图调用该函数时,没有任何事情发生.我迷失在接下来我需要做什么.非常感谢所有帮助!

#include <iostream>
#include <cstdlib>
using namespace std;

double playRPS (char a, char b);


int main() {

    char letter;
    char result = 0;

    cout << "Welcome to COP3014 ROCK PAPER SCISSORS!\n\n";

    cout << "Please select: " << endl
         << "Rock(r), Paper(p), or Scissors(s)? " << endl
         << "Or enter q to quit --> ";

    cin >> letter;

    if (letter == 'r' || letter == 'R' || letter ==  'p' || letter == 'P'     || letter == 's' || letter == …
Run Code Online (Sandbox Code Playgroud)

c++ function

1
推荐指数
1
解决办法
133
查看次数

使用`&`和`(int*)`打印char*有什么区别?

我正在学习OOP课程,但我是C++的新手.我的导师向我们介绍了C++中的字符数组.他说,要在C++中获取字符数组的基址,可以使用以下任一方法:

char* a = "Test String";
cout << &a; // Prints base address of char array
Run Code Online (Sandbox Code Playgroud)

要么

char* a = "Test String";
cout << (int*)a;
Run Code Online (Sandbox Code Playgroud)

但当我尝试两个相同的char数组时,我得到了不同的结果.两者有什么区别?

c++ arrays pointers

1
推荐指数
1
解决办法
97
查看次数

GLEW和我的着色器不同意 - 我是否有延伸?

我正在通过使用发现着色器,并且遇到了一个奇怪的问题.

我需要ARB_robustness片段着色器的扩展才能正常运行.GLEW肯定我有这个扩展:

assert(GLEW_ARB_robustness); // Passes
Run Code Online (Sandbox Code Playgroud)

...但是当我require在我的着色器中...

#extension GL_ARB_robustness : require
Run Code Online (Sandbox Code Playgroud)

...着色器编译器无法识别它.

0(3) : error C0202: extension ARB_robustness not supported
Run Code Online (Sandbox Code Playgroud)

GLEW已正确初始化,只要我不尝试使用该扩展,一切正常.

可能是这个问题的原因,我怎么能解决它?提前致谢.

更新:我在朋友的帮助下嘲笑我,我glxinfo继续他的建议,扩展的名称确实出现在输出中.

opengl glew glsl opengl-extensions

0
推荐指数
1
解决办法
115
查看次数

`strcmp`的返回值的顺序是什么?

我的代码非常少:

int test = strcmp("Websecurity", "easily");
printf("%d\n", test);
Run Code Online (Sandbox Code Playgroud)

结果是-1.为什么?显然'W'大于'e'?

c string strcmp

0
推荐指数
1
解决办法
207
查看次数

与char**混淆

如果我写

//case 1
char *animals[2] = {"cat", "dog"};
char **animal_ptr = animals; 
printf("%s\n", *(animal_ptr + 1)); //fine
Run Code Online (Sandbox Code Playgroud)

而且,以不同的方式:

//case 2
char *animal = "cat";
char **animal_ptr = &animal;
 *(animal_ptr + 1) = "dog";
printf("%s\n", *(animal_ptr + 1)); //fine
Run Code Online (Sandbox Code Playgroud)

所以,我对上面的两个例子感到困惑.

  1. 在案例1中,我理解这animal_ptr是一个指向指针集合的指针,并且由于指针保存地址,我不需要添加&.但是在第2种情况下,我必须添加一个&for才能工作,即使animal它已经是一个指针.为什么?

  2. 在这两种情况下,为什么通过另一个可接受的指针修改字符串文字?据我所知,当你声明一个像char *x = "..etc";这样的字符串时,它被放在一个无法修改的内存中.那么,为什么在情况1,无论animalanimal_ptr可修改字符串?

  3. 为什么strcpy(*(animal_ptr + 1), "bird")失败,程序停止,即使任务在2中工作.?

  4. 在案例2中:

    • 当我这样做printf("%s", *animal_ptr),它工作正常,对我有意义.
    • 当我这样做时printf("%s", *animal),它会停止.为什么?

谢谢,很抱歉很多问题.

c arrays pointers char

0
推荐指数
1
解决办法
165
查看次数

cout一个字符串流但打印一个指针

这是我的代码:

#include <iostream>
#include <sstream>
#include <string>

using namespace std;

class TestLog: public std::stringstream
{
        public:
                ~TestLog()
                {
                        cout << (str()) << endl; // Why does this print an address ?
                }
};

int main()
{
        TestLog() << "Hello World!"; //test 1 print an address
        stringstream ss;
        ss << "Hello World!";
        cout << (ss.str()) << endl; //test 2 print a string

        return 0;
}
Run Code Online (Sandbox Code Playgroud)

并输出:

0x401b90

你好,世界!

编译器信息:

g ++(GCC)4.8.5 20150623(Red Hat 4.8.5-11)

在我看来,(a)std :: stringstream的str()方法返回一个字符串.(b)std :: cout是std :: ostream的对象.因此,两个测试都将调用ostream的相同运算符函数并打印相同的"Hello …

c++ c++03

0
推荐指数
1
解决办法
562
查看次数

这个指针是指向给定对象还是给定对象的地址?

以下是代码。

Account savings("Mac, Rita",654321, 123.5);
Account *ptrAccount = &savings;
Run Code Online (Sandbox Code Playgroud)

Account是一个自定义类,其中包含三个用于数据成员的字段,即帐户持有人姓名,帐号,帐户余额。我知道第一行将创建一个对象并初始化数据成员的字段。第二行将创建一个名为name的指针ptrAccount。据我了解,它指向&savings,是的地址savings。在此,储蓄是科目类型的对象。在教程中,它说了类似“ ptrAccount初始化指针,使其指向对象savings”之类的内容。我错过了什么?任何意见,不胜感激。

c++ pointers terminology

0
推荐指数
1
解决办法
46
查看次数

你能解释这个枚举声明吗?

我正在阅读a中的代码JsonParser,我想知道这个枚举是如何工作的:

enum JsonTag {
    JSON_NUMBER = 0,
    JSON_STRING,
    JSON_ARRAY,
    JSON_OBJECT,
    JSON_TRUE,
    JSON_FALSE,
    JSON_NULL = 0xF
};
Run Code Online (Sandbox Code Playgroud)
  • 这是否意味着NULL定义为半字节1111

  • 这是否意味着,中间的每一个值NUMBER,并NULL会之间00xF

  • 这是否意味着NULL某种内存位置?

  • 什么会的价值STRING,ARRAY......是什么?

  • 为什么用这种方式声明枚举?

c++ enums

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

如何在C中使用自引用结构?

我正在学习C中的自引用结构.以下代码中的错误是什么?我如何使其工作?

#include<stdio.h>

struct student
{
  char grade;
  struct student *ptr_dat;  //we have a pointer of datatype struct student.
};

int main()
{
  struct student data;
  struct student data1;
  data.grade = 'C';
  data1.grade = 'B';

  data.ptr_dat = &data1;  //the address of another structure is assigned. 

  /*
   print the element grade in both structures directly.
  */
  printf("%c\n",data.grade);
  printf("%c\n",data1.grade);
  /*
   how to print the element grade in data1 using pointer
  */
  printf("%c\n",data.(*ptr_dat)); //This is error.

  return 0;

} 
Run Code Online (Sandbox Code Playgroud)

提前致谢.

c struct pointers

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

将C代码转换为仅使用goto

我有以下C代码:

void BubbleSort(int a[], int array_size)
{
    int i, j, temp;
    for (i = 0; i < (array_size - 1); ++i)
    {
        for (j = 0; j < array_size - 1 - i; ++j)
        {
            if (a[j] > a[j+1])
            {
                temp = a[j+1];
                a[j+1] = a[j];
                a[j] = temp;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我如何goto仅根据这些代码重写此代码?

c goto

-4
推荐指数
1
解决办法
597
查看次数

标签 统计

c++ ×5

c ×4

pointers ×4

arrays ×2

c++03 ×1

char ×1

enums ×1

function ×1

glew ×1

glsl ×1

goto ×1

opengl ×1

opengl-extensions ×1

strcmp ×1

string ×1

struct ×1

terminology ×1