标签: pointers

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

对于那些有课程开发经验的人:关于数组的最佳策略是什么?

我见过一些学校在变量和控制结构之后教授数组,甚至在教学功能之前.这允许教授一些基本的算法等.然而,它带来了如何将数组传递给函数的问题,因此有必要回到数组指针教授和补丁.

另一个选择是从变量和控制结构转到函数,然后教指针,一旦你有指针,从头开始教数组,然后使用它来获得动态内存分配.

对我来说第二个选项更有意义,因为与简单变量不同,使用数组很容易"走出界限",但是尚未了解内存和指针的学生可能无法理解这些界限之外的内容.

但是,我很想知道其他人的想法.

c arrays pointers

19
推荐指数
4
解决办法
2826
查看次数

C++指向函数的指针,初学者问题

我想问一下C++中的指针

我有一些简单的代码:

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

int runner(int x,int y, int (*functocall)(int, int)){
 return (*functocall)(x,y);
}
Run Code Online (Sandbox Code Playgroud)

现在,假设我使用这种方式调用这些函数:

cout<<runner(2,5,&add);
Run Code Online (Sandbox Code Playgroud)

或者可能

cout<<runner(2,5,add);
Run Code Online (Sandbox Code Playgroud)

有什么不同吗?因为当我尝试时,结果是相同的,没有错误.

非常感谢

c++ pointers function

19
推荐指数
2
解决办法
361
查看次数

在删除动态分配对象的指针向量中的元素之前,我需要做什么?

我有一个向量,我填充指向对象的指针.我正在努力学习良好的记忆管理,并提出一些一般性问题:

  1. 当我完成向量时,我必须遍历它并在每个指针上调用delete吗?
  2. 为什么我不必在没有新语句的情况下调用向量或我声明的任何其他变量上的delete,但必须在指针上调用delete?
  3. 如果在返回的函数中声明向量(导致向量超出范围),C++是否会为我释放指针的内存?

c++ pointers memory-leaks memory-management vector

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

c ++指针范围

当您拥有以下代码时会发生什么:

void makeItHappen()
{
    char* text = "Hello, world";
}
Run Code Online (Sandbox Code Playgroud)

是否text超出范围并自动删除或保留在内存中?

以下示例如何:

class SomeClass
{
    public:
      SomeClass();
      ~SomeClass();
};

SomeClass::SomeClass() { }
SomeClass::~SomeClass()
{
    std::cout << "Destroyed?" << std::endl;
}

int main()
{
    SomeClass* someClass = new SomeClass();
    return 0;
} // What happend to someClass?
Run Code Online (Sandbox Code Playgroud)

这里有同样的事吗?

谢谢!

c++ pointers scope

19
推荐指数
3
解决办法
2万
查看次数

用python执行汇编程序代码

我想在python脚本中执行汇编代码.那可能吗?

在C编程中会是这样的

static inline getesp(){
        __asm__("mov %esp, %eax");
}
Run Code Online (Sandbox Code Playgroud)

但是如何用Python做到这一点?可能吗?

python assembly pointers memory-address

19
推荐指数
4
解决办法
3万
查看次数

可以在printf中使用指向字符串的指针吗?

我想的是:

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

int main(void) {
    //test pointer to string
    char s[50];
    char *ptr=s;
    printf("\nEnter string (s): ");
    fgets(s, 50, stdin);
    printf("S: %s\nPTR: %s\n", s, *ptr);

    system("PAUSE");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

或者我应该使用*(s + i)和格式说明符%c的for循环?这是通过指针和简单的printf打印字符串的唯一可能方法吗?

更新:printf使用数组的第一个元素的地址进行操作,所以当我使用*ptr时,我实际上是使用第一个元素而不是它的地址.谢谢.

c arrays string printf pointers

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

C编程:将int指针转换为int?

假设我有一个名为ptr的void*.我应该如何使用ptr存储int?写作是否足够

ptr = (void *)5;
Run Code Online (Sandbox Code Playgroud)

如果我想保存5号?或者我必须使用malloc来保存它?

c pointers void

19
推荐指数
2
解决办法
5万
查看次数

C++ Const指针声明

我正在审查一些代码,我遇到了一些我不熟悉的代码.经过一番搜索后,我无法想出为什么要这样做或者这个声明的好处.

myClass const * const myPtr = myClass->getPointer();
Run Code Online (Sandbox Code Playgroud)

这是const指针的声明还是完全不同的东西?

c++ pointers constants

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

不使用+添加两个数字

我有这个代码可以解决这个问题:

#include <stdio.h>
int main()
{
    int a = 30000, b = 20,sum;
    char *p;
    p=(char *)a;
    sum = (int)&p[b]; // adding a & b
    printf("%d",sum);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下代码中发生了什么吗?

p = (char*)a;
sum = (int)&p[b]; // adding a & b
Run Code Online (Sandbox Code Playgroud)

c pointers

19
推荐指数
3
解决办法
981
查看次数

Objective-C中的标记指针

回答这个问题时,我注意到现代Objective-C运行时使用了标记指针.Mike Ash文章及其评论指出,它们用于某些NSNumberNSDate实例.

这让我想到了不同平台的完整情景表:

OSX/iOS 32/64位Objective-C运行时在哪里使用标记指针?

pointers memory-management runtime objective-c

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