在这里学习C我目前在指针的主题,我对一些事情感到困惑。
int c;
printf("insert the first number of your age");
scanf("%d", &c);
字符串
上面的一个工作正常,但不
int c;
int p = 1;
c = &p;
型
还有,为什么我们不用&来表示字符串。比如说
char val[2];
printf("please insert your Blood type");
scanf("%c",val);
型
我对计算机体系结构有相当的了解。如果它可以被关联,如果你能通过将它连接到**微指令和CDU(控制解码单元)来向我解释它,通过将它也关联到外部总线,如 MAR 和 MDR*,那将是非常好的。
2条答案
按热度按时间iszxjhcz1#
scanf("%d", &c);
中,您将指向int
的指针传递给scanf
函数,以便它可以写入指针指向的变量(即c
)的内存。c = &p;
中,您尝试将int*
分配给int
。这些是不兼容的类型。一个int*
* 指向 * 一个int
,但不是一个int
。scanf("%c",val);
中,char
数组val
* 衰减 * 为指向数组中第一个元素的指针。类型是char*
-这正是%c
将char
写入提供的内存所需的类型。如果变量var
是一个char
而不是一个char
数组,那么就需要scanf("%c", &val);
来提供一个char*
。如果你能通过将它连接到微指令和CDU(控制解码单元)来向我解释它,并将它与外部总线(如MAR和MDR)联系起来,那就太好了
我看不出这有什么关系。您使用的语言提供了一组规则和对底层进行的抽象。所描述的
scanf
和指针操作在任何兼容的C实现中以相同的方式工作,而不管C代码在特定目标平台上工作所需的机器代码、微指令和总线。而且,我对这些事情知之甚少。k2fxgqgv2#
字符串
c
不是指针,所以它不能保存 *p
的地址 *。你应该使用:型
那密码就不会错但从上下文中看不出你假装用这些变量做了什么,所以我只是猜测。