没有任何导师,在网上自学自己的书籍和参考资料,我如何确保我正确理解C中的指针?我应该接受哪些测试,要回答哪些问题?
答案 0 :(得分:14)
尝试在Stack Overflow上回答关于指针的问题。通过这种方式,如果您对指针的理解正确或者其他人不同意您回答这些问题的方式,您会很快发现。
答案 1 :(得分:2)
在K& R中,你可以解决一些练习,看看你是否做对了。此外,您可以查找来自各大学(而不仅仅是大学)C编程课程的解决方案,并解决它们(然后与解决方案进行比较)。
答案 2 :(得分:2)
你还需要malloc和structs:
stack.h
typedef struct stack *Stack;
// returns a Stack (struct stack*) for the other functions to use.
Stack createStack();
// put an item on the stack.
void push(Stack s, int value);
// remove an item from the top of the stack and return it.
int pop(Stack s);
// returns 0 if items are on the stack, non-zero otherwise
int isEmpty(Stack s);
// no memory leaks.
void destroyStack(Stack s);
答案 3 :(得分:1)
像This和This之类的测试将为您提供语法知识,但正确使用指针需要的不仅仅是语法理解。需要专业知识只有时间会给你。
我建议你练习。实现内存管理器(开头简单)然后查找开源项目,看看它们如何处理指针管理。
我喜欢this解释,非常简单。
我在麻省理工学院看到的所有课程THIS ONE都是非常现实的,并且开放加免费(
答案 4 :(得分:1)
解释为什么这段代码适用于某些系统而不适用于其他系统,以及它是否有效的条件。
int next_arg(va_list *ap)
{
return va_arg(*ap, int);
}
int vsum(va_list ap)
{
int x, y;
for (x=0; y=next_arg(&ap); x+=y);
return x;
}
int sum(int dummy, ...)
{
int x;
va_list ap;
va_start(ap, dummy);
x = vsum(ap);
va_end(ap);
return x;
}
提示:如果它将失败,那将是一个编译时错误。
答案 5 :(得分:0)
我认为没有直接的答案。
只需编写一堆测试代码来处理指针并验证一切是否按预期工作。如果不确定,请使用调试器。
答案 6 :(得分:0)
答案 7 :(得分:0)
一些“面包和黄油”使用你需要理解的指针:
答案 8 :(得分:0)
理解指针的一个关键是理解底层的计算机体系结构。汇编语言是什么以及它是如何工作的。基本处理器如何处理指令。堆栈和堆是什么。调用堆栈的工作原理。内存分配如何工作。
答案 9 :(得分:0)
尝试向不是程序员的人解释。如果你能解释这些指针,那你就明白了。如果你对它的解释感到困惑,你还没有得到它。