函数中的 * 与 & 的操作有关问题
函数中的 * 与 & 的操作问题
程序中函数是想变x的值为0
但是将函数中的"*i = c; "换成"i = &c;"就不起作用。求教原因
#include<stdio.h>
SetZero(int*);
int c=0;
main()
{
int x;
x=2;
SetZero(&x);
printf("c = %d,x = %d,",c,x);
}
SetZero(int *i)
{
*i = c;
// i = &c; ????????????
printf("i = %d,",*i);
}
下面一个程序中
// q = p;这一行为什么不能去;
我想,应该是 *q = 3; 这一行出错,但是,当去调注释(放入q=p时)*d = 1.2;为什么不报错??
#include<stdio.h>
main()
{
int x = 1;
int *p, *q ;
double *d;
*d = 1.2;
p = &x;
// q = p;
*p = 2;
*q = 3;
x++;
printf("***********************************\n");
printf("x = %d;\n*p = %d;\n*q = %d;\n*d = %f. ",x,*p,*q,*d);
}
------解决方案--------------------
*i = c; 与i = &c;本来就不一样,前者是用c对i所指向的对象赋值,后者是另i指向c。
------解决方案--------------------
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
程序中函数是想变x的值为0
但是将函数中的"*i = c; "换成"i = &c;"就不起作用。求教原因
#include<stdio.h>
SetZero(int*);
int c=0;
main()
{
int x;
x=2;
SetZero(&x);
printf("c = %d,x = %d,",c,x);
}
SetZero(int *i)
{
*i = c;
// i = &c; ????????????
printf("i = %d,",*i);
}
下面一个程序中
// q = p;这一行为什么不能去;
我想,应该是 *q = 3; 这一行出错,但是,当去调注释(放入q=p时)*d = 1.2;为什么不报错??
#include<stdio.h>
main()
{
int x = 1;
int *p, *q ;
double *d;
*d = 1.2;
p = &x;
// q = p;
*p = 2;
*q = 3;
x++;
printf("***********************************\n");
printf("x = %d;\n*p = %d;\n*q = %d;\n*d = %f. ",x,*p,*q,*d);
}
------解决方案--------------------
*i = c; 与i = &c;本来就不一样,前者是用c对i所指向的对象赋值,后者是另i指向c。
int a = 3;
int c = 5;
int * i = & a;
* i = c;
assert( a == c );
assert( i == &a );
assert( i != &c );
a = 3;
c = 5;
i = &a;
i = &c;
assert( a != c );
assert( i != &a );
assert( i == &c );
------解决方案--------------------
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……