整型变量

DNA图谱 / 问答 / 标签

p1指向某个整型变量,要使指针p2也指向同一变量,哪一个语句是正确的 。 A. p2=*&p1; B. p2=**p1; C. p2=&

楼主采纳我吧p1 指向某个整型变量 ,假设指向变量a, a的值是100 ,a的地址是0x0022ffff, 我画个图 p1 0x0022abcc 0x0022ffff ---------------------> a 0x0022ffff 100 本身的地址 存放的 内容 本身的地址 存放的 内容 A 先取p1的地址,然后进行间接操作,说明p2里面也放的 0x0022ffff B 对p1进行1次间接操作,等于访问了0x0022ffff 中的内容,再进行间接操作,等于访问内存地址为100的内容,显然是非法的C p2取的是p1的地址,也就是p2指向p1D p2等于100,为什么,p2等于对p1进行间接访问,取的是内存0x0022ffff中的值,不就是100么总之,搞清楚指针就是一个只放地址的存储空间,也是普通变量,只不过不放int ,不放float,只放地址,可以进行间接操作,就是访问那个地址的值,就OK了

刚学C语言 请问ASCII码值为128-255字符型数据转为整型变量时得到的是-128--1的值 怎样算的 谢谢

因为一个char的大小是一个byte即8个bit,一共可以表示2的8次方即256个数字0-255但是char分为signed和unsigned两种形式,即是否有正负之分如果是signed就是有正负号的,在机器码中8位二进制bit就需要占用一个作为区别正负号的标记,分别用1或0表示,那么剩下的7个bit能够表示0-127的数字,由于2的8次方一共是256个数字,可以得到负数范围内有128个数字,即一个signed char能表示从-128-127的数字与之相对的,unsigned char即表示从0-255的值,由于ASCII码没有负值,而且一般的ASCII码只需要使用0-127就足够了,所以剩下的那128个字符就组成了extended ASCII,当然,一般是没有什么作用的,也可以看到这个范围的符号一般都是些稀奇古怪的,但是你将它赋值到这个范围就引起了这个问题虽然定义一个char变量生成的究竟是unsigned char还是signed char和你具体使用的环境有关,但一般的INTEL计算机都是生成signed char,如果你不能确定可以使用limits.h中提供的常量来确定,当然int long 等等也能够用相同方式查看,如果是float的话用float.h查看,具体的可以查询library的说明,程序如下,自己运行看看吧#include <stdio.h>#include <limits.h>main(){int a=CHAR_MIN;int b=CHAR_MAX;printf("%d %d ",a,b); //Print the minimum value and maximum value of data type char}现在我们已经明白了,用8位bit表示的signed char是无法表示超过127的数字的,所以呢,当你赋予变量一个超过127的值的时候,它就会自动变回负值的最小值并向上递加,可以想象成一个圆环,原理在于CPU中只存在加法器,所以如果不能循环,你就没法做减法了,具体的你可以随便买一本微机原理看看,我推荐CSAPP,如果你想要具体研究C语言的话,可以看看C语言圣经K&R,多用用LINUX