C语言中*p=*p1*(*p2);是什么意思

2024-11-15 14:49:16
推荐回答(5个)
回答1:

*p = *p1 * (*p2) 就是指针p1和p2指向的地址单元中存放的数据相乘,并把结果存放到指针p指向的地址单元内。


举个简单的例子:

int *p = (int *)malloc(sizeof(int));  // 申请内存空间  地址为0x002d14f8
int *p1 = (int *)malloc(sizeof(int)); // 申请内存空间  地址为0x002d1538
int *p2 = (int *)malloc(sizeof(int)); // 申请内存空间  地址为0x002d1578
*p1 = 2;  // 赋初值(存到地址为0x002d1538的内存区)
*p2 = 3;  // 赋初值(存到地址为0x002d1578的内存区)
*p = *p1 * (*p2);  // 运行结果为6(存到地址为0x002d14f8的内存区)

注:内存地址是经过调试后知道的。

回答2:

你首先要懂一点指针的基本知识;
1.int *p1=&a,*p2=&b;
则表示p1和p2是两个指针,分别指向变量a和b。
int *p;表示p也是指针,指向不明(所以这里指向不明,是不好的,要给p赋值)。

2.*p和*p1,*p2代表指针指向的内容,即未知和a,b

3.*p=*p1*(*p2);要注意第3个*是代表乘号,其余是指针的用途
*p=*p1*(*p2)就代表*p=a*b

回答3:

*p=*p1*(*p2);
的意思是把p1指向的变量与p2指向的变量相乘,
把结果存到p指向的变量中。
由于没有对指针p赋值,程序可能导致系统出现异常,报错。
调试环境应该会收到警告信息。
p1 指向a
p2 指向b
因此输出的应该是1*3 = 3

回答4:

就是将1赋值给a,将3赋值给b,将5赋值给c
将a的存储地址赋值给p1,将b的存储地址赋值给p2,将c的存储地址赋值给p3
然后将p1存储的地址指向的变量的值乘以p2存储的地址指向的变量的值
将得到的结果存到p存储的地址所指向的位置
然后输出p存储的地址所指向的位置里存储的值
方法结束

回答5:

*p=*p1*(*p2);
就是相当于 *p=a*b=3