*p=&a和*p=a的区别在于赋值的方向不同。
*p=&a,表示将指针p的值设为a的地址。这意味着p指向a,*p表示通过指针p访问a的值。
示例代码:
int a = 10;
int *p; // 声明一个int类型的指针变量p
p = &a; // 将p的值设为a的地址
printf("%d", *p); // 输出a的值,结果为10
*p=a,表示将a的值赋给指针p所指向的内存位置。这意味着将a的值放入到指针p所指向的内存地址中。
示例代码:
int a = 10;
int *p; // 声明一个int类型的指针变量p
p = (int *)malloc(sizeof(int)); // 使用动态内存分配分配一块内存给指针p
*p = a; // 将a的值赋给指针p所指向的内存位置
printf("%d", *p); // 输出指针p所指向的内存位置的值,结果为10
free(p); //释放动态分配的内存
总结:
- *p=&a是将地址赋给指针,可以通过*p访问该地址中存储的值。
- *p=a是将值赋给指针所指向的内存位置,可以通过*p访问该内存位置中存储的值。