0

我在 C 程序中有一个错误。它说 %d 需要 int,但正在读取 int *。我之前使用了一些 mod10 函数,用于分隔一个 4 位数字。在处理完每个数字之后,除了除法和其他 mod10 之外,我将这些数字重新组合成一个 4 位整数,并告诉它打印出来。在 printf 行中使用 %d 时,我收到一条错误消息,说 %d 正在寻找一个“int”,而它正在寻找一个“int *”。究竟什么是'int *',以及关于这里出了什么问题的任何想法?

4

5 回答 5

3

一个int *是一个pointer to an int

要获取指向变量的指针的值,请*在变量名前面使用。要获取变量的地址,请&在其名称之前使用。

例子;

int c = 1, d= 0;  
int *e = &c;     // assign address of c to pointer e
d = *e;          // assign value that c points to, to d
printf("%d",d);  // print int value of d
printf("%d",*e); // same output as line above. print value c points to

是一个关于指针的小教程。

于 2012-09-23T20:55:15.913 回答
1

Anint*指向整数而不是整数本身的指针。C 有指针的概念,指针是可以指向其他变量的变量,允许你做各种奇妙的事情。

没有看到你的代码,很难看出你做错了什么,但你可以通过声明它来获得一个指针:

int * pInt;

或使用地址运算符:

doSomethingWith (&myInt);
于 2012-09-23T20:57:37.230 回答
1

int* 是指向整数的指针,而不是整数变量。这意味着它不是保存一些数据,而是保存对内存中某些数据所在位置的引用。如果您想在它引用的位置访问数据,那么您需要取消引用指针。

要做到这一点,你这样做:

int a = 100; //an integer variable
int* b= &a; //b is now the location of a in memory
cout << *b; //This dereferences b to the data in a, and prints 100

希望这会有所帮助,任何更正的人请告诉我。

于 2012-09-23T20:58:01.940 回答
0

向我们展示(通过将其编辑到您的问题中)它抱怨的代码行。

要回答您的问题, anint*是指向 an 的指针int。例如,给定

int i;
int *p;

i*p是 类型int&ip是 类型int*

在 C 教科书中查找“指针”。

此外,comp.lang.c 常见问题解答是一个极好的资源;第 4 节讨论指针。(但它主要是为了回答您在开始理解这些概念后会遇到的问题。)

于 2012-09-23T20:54:44.077 回答
0

int *是一个指向整数的指针。

请发布标记的代码行、错误消息和声明变量的行。

于 2012-09-23T21:00:57.203 回答