Tag: 指针

C – “char var ”和“char * var”之间的区别?

我期待以下vector在RAM中具有相同的表示forms: char a_var[] = "XXX\x00"; char *p_var = "XXX"; 但奇怪的是,如果我使用f(p_var)调用正在运行的应用程序,则调用types为f(char argument[])的库函数。 但是使用f(a_var)是好的! 为什么?

在C中,声明指针的正确语法是什么?

我依稀记得在回答另一个问题之前看到这个,但search没有得出答案。 我不记得什么是正确的方式来声明variables是指针。 是吗: Type* instance; 要么: Type *instance; 虽然我知道在大多数情况下都会编译,但我相信有一些例子很有意义,可能与在同一行中声明多个相同types的variables有关,所以比另一个更有意义。

解引用一个无效的指针,然后取出结果的地址

考虑: int* ptr = (int*)0xDEADBEEF; cout << (void*)&*ptr; 如果*非法,那么它被用于立即&并且在没有超载op& op*在使用? (这对于处理过去结束的数组元素&myArray[n]具有特别的影响,这个expression式&*(myArray+n)显式等价, 这个问答处理了更广泛的情况,但是我并不觉得它真的满足了上面的问题。)

这些关于指针的陈述有相同的效果吗?

做这个… char* myString = "hello"; …有同样的效果吗? char actualString[] = "hello"; char* myString = actualString;

NULL + int的结果是什么?

我已经看到在OpenGL VBO实现中使用下面的macros: #define BUFFER_OFFSET(i) ((char *)NULL + (i)) //… glNormalPointer(GL_FLOAT, 32, BUFFER_OFFSET(x)); 你能否提供一些关于这个macros如何工作的细节? 它可以被replace为一个function? 更确切地说,增加一个NULL指针的结果是什么?

如何比较指针?

假设我有两个指针: int *a = something; int *b = something; 如果我想比较它们,看看它们是否指向相同的地方(a == b)是否工作?

指针地址在Cmultidimensional array中

我搞乱了multidimensional array和指针。 我一直在看一个程序,打印出一个简单的数组的内容和地址。 这是我的数组声明: int zippo[4][2] = { {2,4}, {6,8}, {1,3}, {5,7} }; 我目前的理解是, zippo是一个指针,它可以保存一些其他指针的地址。 默认情况下, zippo保存指针zippo[0]的地址,也可以保存指针zippo[1] , zippo[2]和zippo[3] 。 现在,采取以下声明: printf("zippo[0] = %p\n", zippo[0]); printf(" *zippo = %p\n", *zippo); printf(" zippo = %p\n", zippo); 在我的机器上,输出如下: zippo[0] = 0x7fff170e2230 *zippo = 0x7fff170e2230 zippo = 0x7fff170e2230 我完全理解为什么zippo[0]和*zippo具有相同的值。 它们都是指针,它们都存储整数2的地址(默认值),或者zippo[0][0] 。 但是zippo什么共享相同的内存地址? zippo不应该存储指针zippo[0]的地址吗? Whaaaat?

C ++通过引用传递一个数组

这是否允许通过引用传递数组? void foo(double& *bar) 似乎我的编译器说不。 为什么? 什么是通过引用传递数组的正确方法? 还是一个工作? 我有一个数组参数,我的方法应该修改,我应该后来检索。 另外,我可以使这个数组成为一个类的成员,这工作正常,但它有其他部分我的代码(我想避免)的许多缺点。 感谢致敬。

pythonvariables是指针?

就我所知,Python中的variables只是指针。 基于这个规则,我可以假设这个代码片段的结果: i = 5 j = i j = 3 print(i) 会是3 。 但是我得到了意想不到的结果,那是5 。 此外,我的Python书籍涵盖了这个例子: i = [1,2,3] j = i i[0] = 5 print(j) 结果会是[5,2,3] 。 我是什么理解错误?

在C中反转string

我开发了一个反向string程序。 我想知道是否有更好的方法来做到这一点,如果我的代码有任何潜在的问题。 我期待练习一些C的高级function char* reverse_string(char *str) { char temp; size_t len = strlen(str) – 1; size_t i; size_t k = len; for(i = 0; i < len; i++) { temp = str[k]; str[k] = str[i]; str[i] = temp; k–; /* As 2 characters are changing place for each cycle of the loop only traverse half […]