对于那些有课程开发经验的人:关于数组的最佳策略是什么?
我见过一些学校在变量和控制结构之后教授数组,甚至在教学功能之前.这允许教授一些基本的算法等.然而,它带来了如何将数组传递给函数的问题,因此有必要回到数组指针教授和补丁.
另一个选择是从变量和控制结构转到函数,然后教指针,一旦你有指针,从头开始教数组,然后使用它来获得动态内存分配.
对我来说第二个选项更有意义,因为与简单变量不同,使用数组很容易"走出界限",但是尚未了解内存和指针的学生可能无法理解这些界限之外的内容.
但是,我很想知道其他人的想法.
我想问一下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)
有什么不同吗?因为当我尝试时,结果是相同的,没有错误.
非常感谢
我有一个向量,我填充指向对象的指针.我正在努力学习良好的记忆管理,并提出一些一般性问题:
当您拥有以下代码时会发生什么:
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)
这里有同样的事吗?
谢谢!
我想在python脚本中执行汇编代码.那可能吗?
在C编程中会是这样的
static inline getesp(){
__asm__("mov %esp, %eax");
}
Run Code Online (Sandbox Code Playgroud)
但是如何用Python做到这一点?可能吗?
我想的是:
#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时,我实际上是使用第一个元素而不是它的地址.谢谢.
假设我有一个名为ptr的void*.我应该如何使用ptr存储int?写作是否足够
ptr = (void *)5;
Run Code Online (Sandbox Code Playgroud)
如果我想保存5号?或者我必须使用malloc来保存它?
我有这个代码可以解决这个问题:
#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中的两个字符串,您需要使用该strcmp()函数.但我试图将两个字符串与==运算符进行比较,并且它有效.我不知道如何,因为它只是比较两个字符串的地址.如果字符串不同,它应该不起作用.但后来我打印了字符串的地址:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char* str1 = "First";
char* str2 = "Second";
char* str3 = "First";
printf("%p %p %p", str1, str2, str3);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是:
00403024 0040302A 00403024
Process returned 0 (0x0) execution time : 0.109 s
Press any key to continue.
Run Code Online (Sandbox Code Playgroud)
怎么可能str1和str3具有相同的地址?它们可能包含相同的字符串,但它们不是同一个变量.