交换两个不。通过指针的使用。
int main()
{
int *a;
int *b;
a = 3;
b = 5;
*a=b;
*b=a;
printf("a=%d\n b=%d\n", *a, *b);它在"*a=b(7)“线上显示分段故障。
我尝试引入一个新变量并将其赋值给*a和*b,但是它仍然显示相同的错误。
发布于 2022-11-16 05:15:32
您正在获得的编译错误看起来非常具有描述性。“从'int‘指向'int*’可以使指针不受强制转换的整数转换。”指示要将int分配给int *,这正是您在行a = 3中尝试的内容。如果a设置为int的地址,则可以使用*a = 3为其分配,也可以使用类似于int x; int *a = &x;的内容初始化a,但是编写a = 3是试图将int分配给int *,编译器警告您要注意这一点。
你可能在寻找这样的东西:
#include <stdio.h>
int
main(void)
{
int a, b;
int *ap = &a;
int *bp = &b;
a = 3;
b = 5;
printf("a=%d b=%d\n", a, b);
int tmp = a;
*ap = b;
*bp = tmp;
printf("a=%d b=%d\n", a, b);
}发布于 2022-11-16 03:32:50
指针是指向内存地址的数据类型,因此,例如,如果您有int x = 12,可以设置int *p = x,而p是指向x的内存值的指针(其中x存储在计算机中)。您将指针设置为常量整数,这没有多大意义。另一个问题是*,当您刚接触指针时,它会让人感到困惑。*是您初始化指针的方式,您正确地使用了这些指针。*的另一个用途是取消对指针的引用。在前面的示例中,指针p指向x的内存地址。如果取消引用p,则p设置为x内存地址的值,在本例中为12。如果不想取消引用指针(将指针设置为它所指向的值),则不要使用*。如果要指向另一个指针,则必须将指针初始化为**。
https://stackoverflow.com/questions/74454741
复制相似问题