本文目录一览:
C语言里:为什么不能将int型变量直接赋值给指向int型变量的指针
能,一定能。但你int *p;*p=7;这样不行。为什么呢?因为“能直接给指针指向的数据”赋值,而你这里的p还没有指向,所以不能赋值;这种指针有个名字叫“悬浮指针”,俗称野指针,是不能给它赋值的。
C语言int 赋值问题
因为你要求它输出的是长整型(也就是64位的整数),
而你提供的参数是整数(只有32位)。
int a=40000;
只对4个字节进行了初始化,而输出时,将其当成了
一个8个字节的整数,换句话说,它还使用了另外4个你
没初始化的字节,所以当这4个已初始化的字节与4个
未初始化的字节合为一个8字节的长整数时,其值是不
确定的,也就得到了你看到的这个值(实际上,也可能
是其他值)。
楼上调试通过了,是因为在调试环境下,数据区会被清零,
这样相当于另外的未初始化的4个字节已被设置为0了。
为了验证上面的猜测,你可以看看下面这段代码的结果:
int c = 0;
int a = 40000;
int b = 0;
printf(\"%ld\",a);
在未调试时,看看它的输出结果是否40000;
然后改动c=1或b=1,再试试输出是什么。
祝你好运!
c语言,int赋值给char
可以按照下面代码示意的内容操作,即可完成赋值:
char c[4];
int i=100;
*(int*)c = i;
也可以使用memcpy,示意代码如下:
memcpy(c,i,sizeof(i));
推荐使用第一种方法,这样当要将值回传的时候,只需要按照下面的操作即可
i = *(int*)c;
灵活使用指针类型转换,可以极大的简化程序代码,这个问题即是一个好例子