Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 指向另一类型变量的指针赋值_C_Pointers - Fatal编程技术网

C 指向另一类型变量的指针赋值

C 指向另一类型变量的指针赋值,c,pointers,C,Pointers,我正在运行一个简单的程序 这是代码 #include<stdio.h> #include<conio.h> int main(){ char c,*cc; int i; long l; float f; c='z'; i=15; l=77777; f=3.14; cc=&c; printf("c=%c cc=%u\n",*cc,cc); cc=&i; printf("i=%d cc=%u\n",*cc,cc); cc=&l; printf("

我正在运行一个简单的程序

这是代码

#include<stdio.h>
#include<conio.h>

int main(){
char c,*cc;
int i;
long l;
float f;

c='z';
i=15;
l=77777;
f=3.14;
cc=&c;

printf("c=%c cc=%u\n",*cc,cc);
cc=&i;
printf("i=%d cc=%u\n",*cc,cc);
cc=&l;
printf("l=%ld cc=%u\n",*cc,cc);
cc=&f;
printf("f=%f cc=%u\n",*cc,cc);

return (getch());
}
当我将整型变量赋值给char指针时,它必须只指向整型变量的第一个字节

那么,为什么第二行打印的是15呢?数字15适合一个字节,即
int
的最低有效字节。如果你的机器是little endian(很可能也是很明显的),那么LSB就是内存地址最低的字节



并使用
%p
打印指针,
%u
用于无符号整数。阅读
printf()
的文档,整数
15
的字节布局是
[0x0f][0x00][0x00][0x00]
,因此当您取消引用
cc
时,您将获得第一个字节的内容(恰好是15)


若要查看差异,请尝试大小写
i=1000
,您应该会看到
-24
(地址
&i
处的字节是
0xe8
,当被解释为有符号字节时是
-24

,因此,如果我将整数i中的较大值赋值,则会导致错误?我说的对吗?@google它不会导致错误,它会截断取模256的数字。(如果你的
char
的宽度超过了8位,那么可以使用其他数字。)很抱歉,我在评论中出错了,它会打印其他数字。如果是float,会发生什么情况?@google float通常与
c=z cc=2686791
i=15 cc=2686780
l=-47 cc=2686776
f=0.000000 cc=4199093