相关疑难解决方法(0)

C中的函数指针如何工作?

我最近在C中使用了函数指针.

继续回答你自己的问题的传统,我决定对那些需要快速深入研究这个主题的人进行一些基本的总结.

c function-pointers

1170
推荐指数
10
解决办法
77万
查看次数

理解指针有什么障碍,克服它们可以做些什么?

对于C或C++中的许多新的,甚至是老的大学生来说,为什么指针会成为混乱的主要因素?是否有任何工具或思维过程可以帮助您理解指针在变量,函数和更高级别的工作方式?

有什么好的做法可以让人达到"啊哈,我明白了"的水平,而不会让他们陷入整体概念的困境?基本上,钻取方案.

c c++ pointers

443
推荐指数
16
解决办法
7万
查看次数

C中的指针:何时使用&符号和星号?

我刚开始用指针,我有点困惑.我知道&一个变量的地址,它*可以在指针变量前面使用,以获取指针指向的对象的值.但是当您使用数组,字符串或使用变量的指针副本调用函数时,情况会有所不同.在所有这些内部很难看到逻辑模式.

什么时候应该使用&*

c pointers

272
推荐指数
8
解决办法
19万
查看次数

C动态增长阵列

我有一个程序读取游戏中实体的"原始"列表,我打算创建一个数组,其中包含一个不确定数量的实体的索引号(int),用于处理各种事物.我想避免使用太多的内存或CPU来保存这些索引......

到目前为止,我使用的一个快速而肮脏的解决方案是在主处理函数(本地焦点)中声明具有最大游戏实体大小的数组,以及另一个整数来跟踪已添加到列表中的数量.这并不令人满意,因为每个列表都拥有3000多个阵列,这并不是那么多,但感觉就像是浪费,因为我可以使用6-7列表的解决方案来实现不同的功能.

我没有找到任何C(不是C++或C#)特定的解决方案来实现这一目标.我可以使用指针,但我有点害怕使用它们(除非它是唯一可能的方式).

数组不会离开本地函数作用域(它们将被传递给函数,然后被丢弃),以防更改内容.

如果指针是唯一的解决方案,我如何跟踪它们以避免泄漏?

c dynamic-arrays

120
推荐指数
4
解决办法
20万
查看次数

"引用"和"解除引用"的含义

我在互联网上阅读不同的东西并感到困惑,因为每个网站都说不同的东西.

谈到C.

我读到了*引用运算符&和解引用运算符; 或者引用意味着使指针指向变量,并且解除引用正在访问指针指向的变量的值.所以我很困惑.

我是否可以获得有关"引用和取消引用"的简单但彻底的解释?

c pointers reference dereference

56
推荐指数
5
解决办法
10万
查看次数

**用C语言做什么

我是C的新手,具有良好的java背景,我正在尝试理解指针和数组.

我知道下标operator[]是数组定义的一部分,所以:

int numbers[] = {1,3,4,5};
Run Code Online (Sandbox Code Playgroud)

会创建一个整数数组,它将在内存中表示为16个字节,4个4个字节:

numbers[0] = 1, address 0061FF1C
numbers[1] = 3, address 0061FF20
numbers[2] = 4, address 0061FF24
numbers[3] = 5, address 0061FF28
Run Code Online (Sandbox Code Playgroud)

但是,当涉及指针时,我的知识开始崩溃,所以如果我要创建一个指向数组数字的指针,我将执行以下操作:

int *pNumbers = &numbers[0];
Run Code Online (Sandbox Code Playgroud)

看起来像这样:

指向数字的指针

而且我猜它的大小是4字节?

然而,**我读作"指针指针"对我来说没有意义,为什么有人想要指针指针,当然如果a-> b-> c然后a-> c就足够了?我知道我错过了一些东西,它必须与数组有关,argv可以是类型char[ ]char **下面看到的:

int main(int argc, char **argv){}
Run Code Online (Sandbox Code Playgroud)

所以:

  • 这是什么(**)?
  • 它有什么用途?
  • 它在记忆中如何表现?

c memory arrays pointers

37
推荐指数
6
解决办法
4万
查看次数

如何分配内存并将其(通过指针参数)返回给调用函数?

我在一些不同的函数中有一些代码看起来像这样:

void someFunction (int *data) {
  data = (int *) malloc (sizeof (data));
}

void useData (int *data) {
  printf ("%p", data);
}

int main () {
  int *data = NULL;

  someFunction (data);

  useData (data);

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

someFunction ()useData ()在单独的模块(*.c文件)中定义.

问题是,虽然malloc工作正常,并且分配的内存可用someFunction,但一旦函数返回,相同的内存就不可用.

这里可以看到程序的示例运行,输出显示各种存储器地址.

有人可以向我解释我在这里做错了什么,以及如何让这段代码工作?


编辑:所以似乎我需要使用双指针来做这个 - 当我真的需要使用双指针时,我将如何做同样的事情?所以例如数据就是

int **data = NULL; //used for 2D array
Run Code Online (Sandbox Code Playgroud)

那么我是否需要在函数调用中使用三指针?

c malloc pointers

32
推荐指数
3
解决办法
4万
查看次数

使用C或C++中的多个地址运算符初始化指针指针

它只是发生在我身上我不知道如何使用C++中的一个语句初始化指向非指针值的指针:

int a = 1;
int** ppa = &&a; //Does not compile
int** ppa = &(&a); //Does not compile
int* pa = &a;   //Works but is a
int** ppa = &pa; //Two step solution
Run Code Online (Sandbox Code Playgroud)

我错过了什么,是两个声明唯一的方法吗?

c c++

8
推荐指数
4
解决办法
9019
查看次数

为什么以及何时值得使用指针指针?

可能重复:
指向指针的指针如何在C中工作?

你好,

尽管我认为我在编程中通过了新手阶段,但仍然有一些问题,我不知道怎么解释它们.是的,有很多"如何"超越,但几乎总是没有人解释为什么和/或何时有一种技术有用.

在我的例子中,我发现在某些情况下,在C++中使用指向指针的指针.不是指向对象的指针吗?哪些好处?应该在何处或何时使用指向指针的指针?在这件事上我觉得有点失常.

我希望时间经验丰富的专家可以回应这些担忧,希望其他没有经验丰富的程序员可以分享.;-)

谢谢大家.

Julen.

c++ pointers

7
推荐指数
2
解决办法
3295
查看次数

char * 是什么意思

所以...假设我有这样的功能...

int function( const char *c )
{
 //do something with the char *c here...
}
Run Code Online (Sandbox Code Playgroud)

这是什么char *c意思?我认为我一般了解字符,但我不明白 * 的作用......或者它如何改变含义。

c c++ char

5
推荐指数
2
解决办法
4万
查看次数