相关疑难解决方法(0)

为什么必须指向char数组的指针需要strcpy来为其数组赋值,双引号赋值不起作用?

当你去删除指针时,第一个例子不起作用.当我添加null终止符时,程序要么挂起,要么没有它我得到:

Debug Assertion Failed Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse) 来自Visual Studio 2008

//Won't work when deleting pointer:
    char *at = new char [3];
    at = "tw"; //   <-- not sure what's going on here that strcpy does differently
    at[2] = '\0'; // <-- causes program to hang
    delete at;

//Works fine when deleting pointer:
    char *at = new char [3];
    strcpy(at,"t");
    at[1] = 'w';
    at[2] = '\0';
    delete at;
Run Code Online (Sandbox Code Playgroud)

那么当我使用双引号而不是strcpy时会发生什么?它们都会完美地完成字符串,调试器不会显示任何不同的内容.

c++ arrays string char strcpy

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

C指针问题

用于:

int *a;
Run Code Online (Sandbox Code Playgroud)

a是可以存储整数的地址. &a是存储a的地址.然后,&a存储在哪里?并且,&(&a)存储在哪里?并且,&(&(&a))存储在哪里?地址存储在哪里停止?

c pointers

8
推荐指数
2
解决办法
938
查看次数

C++中的双链表

我有一项任务要求我们实现双向链表类.出于某种原因,他们将节点定义struct如下:

struct node {
  node   *next;
  node   *prev;
  T      *o;
};
Run Code Online (Sandbox Code Playgroud)

在我看来,如果struct成员'data'不是指针,那么编写类会容易得多.不用说我无法改变它所以我将不得不解决它.我尝试实现将元素添加到列表开头的方法,如下所示:

template <typename T>
void Dlist<T>::insertFront(T *o) {
    node *np = new node;
    T val = *o;

    np->o = &val;
    np->prev = NULL;
    np->next = first;

    if (!isEmpty()) {
        first->prev = np;
    } else {
        last = np;
    }
    first = np;
}
Run Code Online (Sandbox Code Playgroud)

在使用ddd进行调试的时候,我意识到第一次插入数字时一切正常,但第二次绕过一切都搞砸了,因为一旦你将'val'设置为新元素,它就会"覆盖"第一个自记忆以来使用了val的地址.我尝试做其他事情,而不是只是让'val'变量执行以下操作:

T *valp = new T;
T val;
valp = &val;
val = *o;

np->o = valp
Run Code Online (Sandbox Code Playgroud)

这似乎也没有用.我认为这是因为它只是一个更复杂的形式,我上面做的只是额外的内存泄漏:)

任何正确方向的想法/指针都会很棒.

c++ pointers linked-list

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

在C++中,我无法掌握指针和类

我刚从大学毕业,现在已经在C++工作了一段时间.我理解C++的所有基础知识并使用它们,但我很难掌握指针和类等更高级的主题.我已经阅读了一些书籍和教程,我理解其中的例子,但是当我看到一些高级的现实生活中的例子时,我无法弄明白.这让我很伤心,因为我觉得它让我无法将我的C++编程提升到一个新的水平.有没有人有这个问题?如果是这样,你是如何突破它的?有没有人知道任何真正描述指针和类概念的书籍或教程?或者使用高级指针和类技术的一些示例代码具有良好的描述性注释?任何帮助将不胜感激.

c++ pointers class

7
推荐指数
4
解决办法
6022
查看次数

指针是否也有任何地址或内存分配?

如果指针存储变量的地址......那么我们从哪里得到指针?

我问的是,如果我们直接使用指针,那么必须有一个位置,我们得到这个指针?

c pointers

7
推荐指数
3
解决办法
7734
查看次数

为早期大学生教授C++记忆管理的最佳策略和实例是什么?

所以我将在即将到来的学期在一所大学教授第二学期的新生C + +课程.学生们已经使用了数组(虽然只是静态分配)并且有一些引用和指针的概念(但可能不多).一般来说,他们没有做过大量的动态内存分配和管理.我试图利用Stack Overflow社区的全球智能,在您的集体经验中,看到了向年轻的计算机科学专业学生提供指针和记忆管理等方法的最有效方法?

在相关主题上有很多有趣的StackOverflow帖子:

在教C时,在指针之前或之后教导数组会更好吗?

理解指针有什么障碍,克服它们可以做些什么?

指针和参考文献之间的真正区别是什么?

我们应该在"编程基础"课程中教授指针吗?

你从老师那里学到的重要概念是什么?

我当然对我教的方式和内容有自己的一套看法,但我真的对我的方法与你的方法有什么不同感兴趣.一些要考虑的子问题(你肯定不限于这些):

  • 你会教什么命令以及如何将这些主题联系起来?"普通"堆栈变量,后跟引用,后跟指针?数组在哪里适合?你什么时候介绍"新"关键字?等等

  • 您看到哪些视觉辅助工具最能表达这些概念?例如,内存值的内存位置的绘图框和变量/指针的名称,箭头指向框?你读过的任何特定的网站或教科书是否有优秀的描述?

  • 是否有特定的代码示例(例如"交换"功能)往往比其他代码更好地获取信息?

教!

编辑

试图将其与我发布的一些链接区分开来:

我发布的大多数以前的SO链接都非常直接关注指针.虽然指针是理解记忆行为的一个组成部分,但我对学生如何理解记忆如何运作的更为全面的主题感兴趣.我们如何最好地说明正常,指针和引用声明之间的差异?我们如何强调全局,堆栈和堆变量之间的差异?我认为即使将返回地址推送到调用堆栈也是公平的游戏.您认为内存管理最重要的方面是什么,如何将它们组合在一起,以及如何以一致的方式实现这一目标?

c++

7
推荐指数
2
解决办法
1244
查看次数

学习C,会欣赏有关此解决方案工作原理的信息

这是我用C编写的第一件事,所以请随意指出它的所有缺陷.:)我的问题是这样的:如果我按照我认为最干净的方式编写程序,我会得到一个破碎的程序:

#include <sys/queue.h> 

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

/* Removed prototypes and non related code for brevity */

int
main()
{
    char    *cmd = NULL; 
    unsigned int acct = 0; 
    int amount = 0; 
    int done = 0; 

    while (done==0) {
        scanf ("%s %u %i", cmd, &acct, &amount);

        if (strcmp (cmd, "exit") == 0)
            done = 1;
        else if ((strcmp (cmd, "dep") == 0) || (strcmp (cmd, "deb") == 0))
            debit (acct, amount);
        else if ((strcmp (cmd, "wd") == …
Run Code Online (Sandbox Code Playgroud)

c segmentation-fault

7
推荐指数
3
解决办法
451
查看次数

在C++中,对象和指向对象的指针之间有什么区别?

在java和objective-c中,表示对象的变量通常是指向该对象的指针.但是,似乎在C++中,非指针类型保持对象是很常见的.这两者有什么区别?

如果我将一个struct作为参数传递给一个函数,我相信我正在通过值传递,这意味着我实际上是在内存中创建一个新结构,并且在传递给它的函数内对该结构的更改不会影响"源"函数外的结构.但是,如果我将指针传递给结构,那么仍然只有一个原始结构,并且对于任何知道此结构的代码,对指针引用的结构的更改都是可见的.我有这个权利吗?

那么,对象有什么不同吗?当我将非指针对象传递给函数时,是否会复制整个对象?

c++ pointers object

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

什么是指针?

请参阅:了解指针


在许多C风格的语言和一些像Fortran这样的旧语言中,可以使用指针.

作为一个只使用基本,javascript和actionscript编程的人,你能告诉我Pointer是什么,以及它最有用的是什么?

谢谢!

language-features pointers programming-languages

5
推荐指数
3
解决办法
1102
查看次数

为什么在编程时需要指针?

在用任何语言编写代码时使用指针是否重要,例如C语言是否会占用更多内存.

感谢你

programming-languages

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