Tag: 指针

Calloc结构与指针在C中

我知道要使用的calloc请求内存,在所有位上写入0然后返回指向它的指针。 我的问题是:如果我使用包含指针的结构的calloc,那些指针会有NULL值还是我必须将它们设置为指向NULL? struct a{ char * name; void * p; }* A; 所以基本上,在我使用带有struct a的calloc之后,name和p会指向NULL吗? 谢谢!

如何检查指针是否已在C中释放?

我想检查指针是否已经释放。 我如何使用gnu编译器设置?

如何使用字符串(字符数组)初始化字符指针,但是不使用整数数组的int指针?

如何使用字符串(字符数组)初始化char指针,但是int指针不是整数数组? 当我试着这个 int* a={1,2,3,4,5}; 它给出了一个错误说法 错误:标量对象’a’在初始化程序中需要一个元素 但, char* name=”mikhil” 工作得很好。

C将int数组指针作为参数传递给函数

我想将B int数组指针传递给func函数,并能够从那里更改它,然后查看main函数中的更改 #include int func(int *B[10]){ } int main(void){ int *B[10]; func(&B); return 0; } 上面的代码给了我一些错误: In function ‘main’:| warning: passing argument 1 of ‘func’ from incompatible pointer type [enabled by default]| note: expected ‘int **’ but argument is of type ‘int * (*)[10]’| 编辑:新代码: #include int func(int *B){ *B[0] = 5; } int main(void){ […]

指针增量和解除引用(左值必需错误)

我试图理解指针递增和解除引用是如何组合在一起的,我这样做是为了试一试: #include int main(int argc, char *argv[]) { char *words[] = {“word1″,”word2”}; printf(“%p\n”,words); printf(“%s\n”,*words++); printf(“%p\n”,words); return 0; } 我希望这段代码可以执行以下操作之一: 首先取消引用然后增加指针(打印word1) 首先取消引用然后增加值(打印ord1) 取消引用指针+ 1(打印word2) 但编译器甚至不会编译它,并给出了这个错误: lvalue required as increment operand我在这里做错了吗?

取消引用50%的出界指针(数组数组)

这是我的“我不理解C和C ++中的指针”集合中的一个新问题。 如果我将具有相同值的两个指针的位混合(指向相同的存储器地址),那恰好具有完全相同的位表示,当一个是可解除引用且一个是结束时,标准说应该发生什么? #include #include #include // required: a == b // returns a copy of both a and b into dest // (half of the bytes of either pointers) int *copy2to1 (int *a, int *b) { // check input: // not only the pointers must be equal assert (a == b); // also the […]

指针数组 – 外部问题

文件1.c. int a[10]; 文件main.c: extern int *a; int main() { printf(“%d\n”, a[0]); return 0; } 给我一个段错误! 出了什么问题?

为什么我可以隐式地将int文字转换为C中的int *而不是C ++中的int *?

我相信在下面的代码中,C“自动将17转换为int * ”,正如有人最近指出的那样(但没有说明原因),这是错误的。 int *ptoi = 17; // I assumed that 17 is being automatically casted to int * 我知道如果我在C ++中执行与上面相同的操作,我会收到一条错误,指出invalid conversion from int to int * 。 但是,如果我在C ++中执行以下操作,它可以正常工作: int *ptoi = (int *)17; 这些是我认为在C中,铸造是隐含的原因。 有人可以解释为什么,在C ++中,我必须使用它,但在C中,它工作正常吗?

简单的交换function……为什么不交换这个?

我是C的新手,仍然试图掌握指针的概念。 我知道如何编写一个有效的交换函数……我更关心的是为什么这个特殊的函数没有。 void swap(int* a, int* b) { int* temp = a; a = b; b = temp; } int main() { int x = 5, y = 10; int *a = &x, *b = &y; swap(a, b); printf(“%d %d\n”), *a, *b); }

将MATLAB中的指针参数传递给C-DLL函数foo(char **)

我正在编写一个从MATLAB调用的C-DLL。 是否可以使用const char **参数调用函数? 例如 void myGetVersion( const char ** ); C代码将是: const char *version=0; myGetVersion( &version ); 什么是相应的MATLAB-Code(如果可能的话)? 非常感谢你! PS:我认为这是帮助页面 ,但我找不到我的情况:-(