Tag: 编程语言

为什么在C中每次执行后变量的地址都会发生变化?

int i=10; printf(“Address of i = %u”,&i); Output: Address if i = 3220204848 Output on re-execution: Address of i = 3216532594 每次执行程序时, i都会得到一个新的地址。 这意味着什么?

Objective C / C中的命名约定,以“_”开头?

我看到ppl的东西定义了这样的变量: b2World *_world; b2Body *_body; CCSprite *_ball; 代替 b2World *world; b2Body *body; CCSprite *ball; 我熟悉第二个,但不是第一个。 所以,我检查了维基百科有关命名约定的内容: 以双下划线或下划线和大写字母开头的名称保留用于实现(编译器,标准库),不应使用(例如__reserved或_Reserved)。 那么,是否有以“_”开头的任何特殊含义? 我看到使用“_”开始的代码在这里: http://www.raywenderlich.com/457/intro-to-box2d-with-cocos2d-tutorial-bouncing-balls 维基页面。

我想知道什么是真正的回报?

假设 第一个案例 int a; int *p= &a ; it works no error 第二种情况 long int a; long int b; b = & a; it wont work 我们大多数人都说b是变量而不是指针。 但请看下面的内容。 所以问题是,如果&a返回一个无符号整数的地址,那么为什么我们不能将它分配给一个普通变量呢? 但为什么只能指针? 见下文 b = (unsigned int) &a ; it works after typecasting though its not practicable. 如果地址是整数格式,那么为什么无符号或长整数保存呢? 我在想,背后肯定有一些隐藏的秘密。 谁有人透露它? 我的想法是,指针必须在内部做一些事情,但我想知道它会是什么以及为什么普通变量不能。 感谢您的所有答案,但实际的问题是什么真的&a返回? 整数值与否? 如果是整数,为什么变量不能保持呢? long int a […]

如何编译MEX文件

如何编译MEX文件? 我是否需要安装任何软件?

为什么我的小lisp QUOTE不会?

我一直在编写基于minilisp编码的微型迷你lisp, McCarthy论文 (由Lisp的根源修订),并使用基于J Incunabulum的(可能令人反感的)风格。 并从这里使用PP_NARG宏。 我还受到了我以前的项目的激励,这是一个codegolf’ed lambda演算解释器 ,我后来发现它与1999年的ioccc Lisp解释器非常相似,特别是在使用游标而不是指针来指代内存地址时。 它似乎工作,包括读者代码。 但是,虽然eval(ATOM(QUOTE X))正确地产生T ,并且eval(ATOM(QUOTE(XYZ)))正确地产生NIL ,并且eval(QUOTE X)产生X ,并且eval(QUOTE(XYZ))产生(XYZ) ; 奇怪的结果是eval(QUOTE(ATOM(QUOTE X)))产生ATOM ,而不是完整的子表达式ATOM(QUOTE X) 。 我认为这是一个长镜头,我并没有让它变得简单,但任何人都可以帮助我找出引用出错的地方吗? 顺便说一下,与上面的描述不同,解释器仅限于单字符标记,因此QUOTE是Q而ATOM是A ( github ) /*cf. http://www.ioccc.org/1989/jar.2.c http://leon.bottou.org/projects/minilisp http://www.jsoftware.com/jwiki/Essays/Incunabulum http://www-formal.stanford.edu/jmc/recursive/recursive.html http://www.paulgraham.com/rootsoflisp.html https://codegolf.stackexchange.com/questions/284/write-an-interpreter-for-the-untyped-lambda-calculus/3290#3290 */ #include #include #include #include #include #include #include”ppnarg.h” #define R return int*m,*n,msz; tag(x){R x&3;} val(x){R x>>2;} #define ALPHA ‘T’ #define NIL […]

如何获取C指针数组的长度?

可能重复: 函数参数中的数组长度 有没有像C can数组那样的Java can .length方法? 谢谢。

C中的(* p)和* p 有什么区别?

这两个声明如下: int (*p)[8]; int *p[8];

C和C ++之间的主要区别是什么?你何时会选择其中一个?

对于那些对两者都有经验的人来说,主要的区别是什么? 对于新手来说,哪个更好学习? 是否有可能选择C的情况,以及您选择C ++的其他情况? 这是一个使用最好的工具,或者一个明显优于另一个的情况。 我知道C ++是C的“增强”,但它是在’83创建的,并没有完全取代C所以必须有更多的东西。 我知道这个问题是主观的,我不是要开始任何宗教战争,所以请尽量做到客观。 明确优势和劣势以及比较。

getlogin()c函数返回NULL并错误“没有这样的文件或目录”

我有一个关于getlogin()函数()的问题。 我试图使用此函数从c程序中获取我的帐户的登录名。 但该函数返回NULL。 使用perror显示错误是“没有这样的文件或目录”。 我没有得到什么问题。 有没有办法在程序中获取用户登录名。 这是一个示例代码: #include #include int main() { char *name; name = getlogin(); perror(“getlogin() error”); //printf(“This is the login info: %s\n”, name); return 0; } 这是输出: getlogin() error: No such file or directory 请让我知道如何做到这一点。 谢谢。

为什么C / C ++字符串文字声明必须是单行的?

是否有任何特殊原因在C ++中不允许使用以下多行字符串文字? string script = ” Some Formatted String Literal “; 我知道可以通过在每个换行符之前放一个反斜杠来创建多行字符串文字。 我正在编写一种编程语言(类似于C),并希望能够轻松创建多行字符串(如上例所示)。 是否有任何技术原因可以避免这种字符串文字? 否则我将不得不使用类似python的字符串文字与三引号(我不想这样做): string script = “”” Some Formatted String Literal “””; 为什么C / C ++字符串文字声明必须是单行的?