我在 C 程序中有一个错误。它说 %d 需要 int,但正在读取 int *。我之前使用了一些 mod10 函数,用于分隔一个 4 位数字。在处理完每个数字之后,除了除法和其他 mod10 之外,我将这些数字重新组合成一个 4 位整数,并告诉它打印出来。在 printf 行中使用 %d 时,我收到一条错误消息,说 %d 正在寻找一个“int”,而它正在寻找一个“int *”。究竟什么是'int *',以及关于这里出了什么问题的任何想法?
问问题
243 次
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
,&i
和p
是 类型int*
。
在 C 教科书中查找“指针”。
此外,comp.lang.c 常见问题解答是一个极好的资源;第 4 节讨论指针。(但它主要是为了回答您在开始理解这些概念后会遇到的问题。)
于 2012-09-23T20:54:44.077 回答
0
int *
是一个指向整数的指针。
请发布标记的代码行、错误消息和声明变量的行。
于 2012-09-23T21:00:57.203 回答