Tag: 指针

如何在C中包含一个dynamic数组INS?

我环顾四周,但一直未能find解决scheme,必须是一个很好的问题。 这里是我有的代码: #include <stdlib.h> struct my_struct { int n; char s[] }; int main() { struct my_struct ms; ms.s = malloc(sizeof(char*)*50); } 这里是错误gcc给我:错误:无效的使用灵活的数组成员 如果我在结构体中声明s的声明,我可以编译它 char* s 这可能是一个优越的实现(指针算术比数组快,是吗?),但我想在CA声明 char s[] 是相同的 char* s

字符指针与cout中的cout混淆

当我用printf()打印一个字符指针时,它会根据转换说明符决定是打印地址还是根据%u或%s打印整个string。 但是当我想用cout做同样的事情时, cout怎么决定在地址和整个string之间应该打印什么呢? 这里是一个例子来源: int main() { char ch='a'; char *cptr=&ch; cout<<cptr<<endl; return 0; } 在这里,在我的GNU编译器中, cout正在尝试将ch输出为string。 如何通过cout使用cout获取ch地址?

我们可以有多less级别的指针?

在一个variables中允许多less个指针( * )? 我们来看下面的例子。 int a = 10; int *p = &a; 同样我们可以有 int **q = &p; int ***r = &q; 等等。 例如, int ****************zz;

在C中,可以通过一个指针修改一个constvariables?

我在代码中写了一些类似的东西 const int x=1; int *ptr; ptr = &x; *ptr = 2; 这是否适用于所有编译器? 为什么GCC编译器没有注意到我们正在改变一个常量variables?

目标C中的“ – >”是什么?

我已经看到这个操作符在“学习Mac上的Objective C”中的示例代码中popup了好几遍。 我相信这是Objective Cinheritance的C语言的运算符。 我试着谷歌search堆栈溢出奇怪的没有出现。 有英文名吗?

什么是保证一个函数指针的大小?

在C中,我需要知道一个结构的大小,其中有函数指针。 我可以保证在所有平台和架构上: void *的大小与函数指针的大小相同? 函数指针的大小是否因返回types而不同? 函数指针的大小不因参数types而异? 我想所有这些答案都是肯定的,但是我想确定一下。 对于上下文,我打电话给sizeof(struct mystruct) ,仅此而已。

char * var之间的区别 和char * var;?

只是想知道是否有任何区别: char* var; char *var; 还是只是一个偏好(间距)的问题?

参考如何在内部实现?

只是想知道在不同的编译器和debugging/发布configuration中它是如何实现的。 标准是否提供了有关其实施的build议? 它有什么不同吗? 我试图运行一个简单的程序,我已经从函数返回非const引用和指向局部variables的指针,但是它的工作方式相同。 那么,内部引用只是一个指针吗?

a,&a,* a,a ,&a 和&a 是否相同的指针?

我有以下的C程序: #include <stdio.h> int main(){ int a[2][2] = {1, 2, 3, 4}; printf("a:%p, &a:%p, *a:%p \n", a, &a, *a); printf("a[0]:%p, &a[0]:%p \n", a[0], &a[0]); printf("&a[0][0]:%p \n", &a[0][0]); return 0; } 它给出了以下输出: a:0028FEAC, &a:0028FEAC, *a:0028FEAC a[0]:0028FEAC, &a[0]:0028FEAC &a[0][0]:0028FEAC 我无法理解为什么&a , a , *a都完全相同。 对于a[0] , &a[0]和&a[0][0] 。 编辑: 多亏了答案,我明白了为什么这些价值观是平等的。 Kernighan&Ritchie的书中的这一行certificate是我的问题的关键: the name of an array is […]

将一个int存储在char数组中?

我想在一个char数组中存储一个4字节的int …这样char数组的前4个位置就是int的4个字节。 然后,我想把int从数组中拉出来… 此外,如果有人可以给我这样的代码在一个循环中,奖励积分… IE写入像8个字节到一个32字节的数组。 int har = 0x01010101; char a[4]; int har2; // write har into char such that: // a[0] == 0x01, a[1] == 0x01, a[2] == 0x01, a[3] == 0x01 etc….. // then, pull the bytes out of the array such that: // har2 == har 多谢你们! 编辑:假设int是4个字节… 编辑2:请不要在意endianness …我会担心endianness。 我只是想用不同的方法在C / […]