相关疑难解决方法(0)

C++中的Arrow Member运算符

我很擅长使用C++.我以前处理过Java和ActionScript,但现在我想学习这种强大的语言.由于C++授予程序员显式使用指针的能力,因此我对使用箭头成员运算符感到困惑.这是我尝试编写的示例代码.

main.cpp中:

   #include <iostream>
   #include "Arrow.h"
   using namespace std;

   int main()
   {
        Arrow object;
        Arrow *pter = &object;

        object.printCrap(); //Using Dot Access
        pter->printCrap(); //Using Arrow Member Operator
        return 0;
   }
Run Code Online (Sandbox Code Playgroud)

Arrow.cpp

   #include <iostream>
   #include "Arrow.h"
   using namespace std;

   Arrow::Arrow()
   {

   }

   void Arrow::printCrap(){
       cout << "Steak!" << endl;
   }
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,它所做的只是使用两种方法(Dot和Arrow)打印牛排.

简而言之,在使用C++编写真正的实际应用程序时,何时使用箭头符号?由于我以前的编程经验,我习惯使用点符号,但箭头对我来说是全新的.

c++ pointers reference pass-by-reference

6
推荐指数
2
解决办法
6810
查看次数

为什么对象有指针而不是int?

如果我们输入

MyObject *obj = [[MyObject alloc] init];
Run Code Online (Sandbox Code Playgroud)

"obj"是指向内存地址的指针.

...当我们创建一个int时,我们输入:

int x = 10; 
Run Code Online (Sandbox Code Playgroud)

我们为什么不打字?

int *x = 10; 
Run Code Online (Sandbox Code Playgroud)

问题是,为什么我们需要一个指向对象的指针而不是int,float等...

pointers objective-c ios

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

为什么有指针参数?

可能的重复:
为什么使用指针?
将可修改的参数传递给c ++函数

为什么我想要指针参数?我能看到的唯一原因是小功能试图减少混淆和更小的内存占用.

c++ parameters pointers

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

为什么某些C/C++函数使用指针作为参数?

我来自C#,我正在学习C++(使用本教程)所以我对内存有相对无足轻重的知识,但我在指针中看到的唯一用途是"节省空间"并迭代数组.那么为什么像函数这样的scanf函数将指针作为参数呢?例如:

printf("What's your name?: "); 然后: scanf("%s",&userName).将变量本身作为参数传递会不会更有意义?我正在看的C书说,使用变量本身会产生意想不到的结果,但我不明白为什么.有谁可以用C++的方式启发我?我从学习C开始,因为我意识到我有多喜欢OOP.

c c++ pointers

4
推荐指数
2
解决办法
2531
查看次数

有两个点和点运算符有什么意义?

我知道点到( - >)和点(.)运算符之间的区别,但我不明白为什么需要两个arrises?是不是总是那么容易不使用指针而只是使用点运算符?来自http://www.programcreek.com/2011/01/an-example-of-c-dot-and-arrow-usage/

    #include <iostream>

    using namespace std;

    class Car
    {
    public:
int number;

void Create() 
{
    cout << "Car created, number is:  " << number << "\n" ;
}
    };

    int main() {
Car x;
// declares x to be a Car object value,
// initialized using the default constructor
// this very different with Java syntax Car x = new Car();
x.number = 123;
x.Create();

Car *y; // declare y as a pointer which points to a …
Run Code Online (Sandbox Code Playgroud)

c++ syntax pointers

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

C基础知识 - 变量和指针存在问题

我在学习C方面遇到了一些问题,而且我真的没有其他地方可以提出建议.我来自一系列OOP语言,例如JavaScript和主要是Python,因此C是一个重大变化,我在尝试学习基础知识方面遇到了一些障碍.我最初是从Zed Shaw的"艰难学习C"开始的,但他并没有在书中教授任何东西.是的,他让你写了很多代码并改变了一些东西,但是我不知道为什么代码会工作,而这只会导致更复杂的例子.

我遇到的主要问题是变量和指针之间的区别(我认为它是非常独特的,直到我看到一些我将在下面发布的例子,这完全模糊了两者之间的界限).

例如,我理解声明和初始化一个int被调用的a和一个指针,p看起来像这样:

int a;
int *p;

a = 12;
p = &a;
Run Code Online (Sandbox Code Playgroud)

令我困惑的是当你声明看起来像指针的变量,但根本不是指针(或者它们是什么?).例如:

char *string = "This is a string";
printf("%s\n", string);
Run Code Online (Sandbox Code Playgroud)

什么string时候定义和初始化?它是指针吗?如果是的话,为什么不在printf函数中打印它时取消引用它?有很多像这样的例子让我很困惑.

我遇到的另一个例子没有任何意义:

int i;
scanf("%d", &i);
Run Code Online (Sandbox Code Playgroud)

i当&符号应该引用变量的内存中的位置而不是值时,这个函数如何更新整数的值?阵列和结构变得更加复杂,这是我停下来的地方,我决定要找一些建议.


老实说,我觉得很尴尬发布这样一个菜鸟问题,但每个人都从某个地方开始.这些基础知识是我知道在继续之前需要能够理解的东西,但是当我看到与我刚刚学到的内容相矛盾的代码示例时,我很难理解它.我知道这是一个非常普遍的问题,但我希望你们中的一些人能够解释这些基础知识,或者指出我可以更好地学习/理解这一点的方向.我遇到的大多数视频教程都过于笼统,与在线文本教程相同,他们告诉你如何做某事,但不解释它,这会导致一些严重的问题.

c pointers

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

为什么 Qt 使用原始指针?

在用普通的 C++ 编写了很多代码之后,我最近又回到了 Qt/C++ 编程。

在浏览 StackOverflow 时,我经常会看到诸如“为什么使用指针?”之类的帖子在大多数情况下,答案的要点是“如果可以避免,请不要使用它们”。

在 C++ 中编码时,我现在主要尝试使用由 ( const) 引用传递的堆栈变量,或者,如有必要,std::shared_ptr分别使用。std::unique_ptr 需要的地方

回到 Qt,我发现所有这些“原则”显然都被完全忽略了。

我知道 Qt 使用自己的内存管理来处理原始指针,但这是我的问题:

为什么他们至少不使用shared_ptror unique_ptr,特别是因为他们甚至有自己的实现QSharedPointer

c++ qt pointers smart-pointers

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

在c ++中通过指针初始化

所以,假设我有一堂课MyClass.现在我想使用另一个叫做的类Animals,我可能会做以下事情.

class MyClass
{
public:
    MyClass();
private:
    Animals animals;
};
Run Code Online (Sandbox Code Playgroud)

不过我也可以这样做:

class MyClass
{
public:
    MyClass();
private:
    Animals* animals;
};
Run Code Online (Sandbox Code Playgroud)

然后使用以下命令在构造函数中初始化类:

animals = new Animals();
Run Code Online (Sandbox Code Playgroud)

两种不同方法有什么区别,哪种更好,为什么?在我的使用中Animals应该只在里面使用MyClass.我的问题主要是关于性能内存,我的意思是通过指针初始化需要更多资源吗?

c++ pointers initialization class

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

为什么在C中指针如此重要?

我了解指针的前提,但是我觉得它很烦人,我不明白为什么它被认为有用:

#include <stdio.h>
int main () {
   int *ptr, q;
   q = 50;
   ptr = &q;
   printf("%d", *ptr);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么这是一个基本概念?

c file include

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

这个星号是什么?

我正在学习c编程,我不明白main方法中的这个星号是什么.

int main(int argc, char* argv[])

c

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

了解指针?

正如标题所示,我无法准确理解指针是什么以及为什么使用它们.我已经搜索了一下但仍然不太懂.我主要在Objective-C工作,但从我读过的内容来看,这更像是一个C主题(所以我添加了两个标签).

根据我的理解,前面带星号的变量指向内存中的地址?我不太明白为什么你使用指向值的指针而不是仅仅使用值本身.

例如:

NSString *stringVar = @"This is a test.";
Run Code Online (Sandbox Code Playgroud)

在这个字符串上调用方法时,为什么它是一个指针而不是直接使用字符串?为什么不使用指向整数和其他基本数据类型的指针?

有点偏离主题,但我是否正确标记了这个?在我编写它时,我认为它更像是一个编程概念,而不是特定于语言的东西,但它确实专注于Objective-C,所以我用objective-c和c标记它.

c objective-c

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

使用智能指针的好处?

以此为例:

#include <memory>
#include <iostream>

int add(int a, int b) {
    return a+b;
}

std::unique_ptr<int> addp(int a, int b) {
    std::unique_ptr<int> ip(new int(a + b));
    return ip;
}

int main(int argc, char const* argv[])
{
    std::cout << add(3, 5) << std::endl;
    std::cout << *(addp(3, 5)) << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

功能addp是否会提高性能,或者换句话说,是否可以避免复制数据?我怀疑结果a+b是在堆栈中,然后以任何方式复制到堆中.

c++ smart-pointers

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

在每个可能的地方使用指针是一种好习惯吗?

可能重复:
为什么要使用指针?

我刚刚掌握了指针,现在我的做法是积极地查看使用指针的场合,并在我可以设想的每种可能情况下使用它们.这是一个好主意吗?如果没有,为什么不呢?或者这仅仅是个人偏好?

c c++

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