中国空间站成为全人类太空之家张家港百度网站制作
news/
2025/10/3 7:33:34/
文章来源:
中国空间站成为全人类太空之家,张家港百度网站制作,青岛外贸网站建设费用,做网站赚钱一般做什么天可补#xff0c;海可填#xff0c;南山可移。 日月既往#xff0c;不可复追。 ——曾国藩 知识点 1、关于整形提升2、大小端3、使用函数时参数的影响3、1、计算大小(有函数存在)3、2、计算大小(无函数存在)3、3、形参和实参 4、关于赋值 1、关于整形提升
char a101;
int …天可补海可填南山可移。 日月既往不可复追。 ——曾国藩 知识点 1、关于整形提升2、大小端3、使用函数时参数的影响3、1、计算大小(有函数存在)3、2、计算大小(无函数存在)3、3、形参和实参 4、关于赋值 1、关于整形提升
char a101;
int sum200;
a27;
suma;
printf(%d\n,sum);这段代码的结果是什么呢 首先关于char存储的时候是是一个字节意味着的是最高只能是2的7次方-1。为什么是7次方呢 因为char是有符号的类型符号位占了一个字节也就还剩下127为最高最小为-128。 此外127和-128其实是连在一起的意思是对于char或者是别的一些有符号的类型也相当于是这样的从0开始一直加1能到127在加上1就会变成-128然后再加最后又到0。 所以a101加上27变成的是相当于-128存储方式是1000 0000作为补码存储再内存中符号位是1。但是在和int类型的sum进行计算时会整型提升(可以点进去看看里面有相关介绍)此时由于最高位置是1所以高位补1然后再取反1。为-128所以suma为sum200-12872。
2、大小端
关于大小端的判断方法有两种。 一种是地址的强制转换反正强制转换的话会从低地址来取地址。 还有一种方法就是利用联合体利用它的存储的特点来判断。 关于细节和实现的操作这里有请点击 那么这样的话知道了大小端这题应该会好些点。
int value 1024;
char condition *((char*)(value));
if(condition) value 1; condition *((char*)(value));
if(condition) value 1; condition *((char*)(value));
printf(%d %d, value, condition);问最后的结果是什么 1024的二进制是0000 0000 0000 0000 0000 0100 0000 0000 注意 * ((char * )(value))这句话的意思是获得value低地址的8为数据若数据是采用大端存储方式则低地址对应的是数据的高位即最左边的8位0则condition0不执行两个if语句则value不变还是1024;若数据是采用小端存储方式则低地址对应的是数据的低位即最右边的8位0则 condition0不管是大段还是小段结果都是一样的都是取全部是0。
3、使用函数时参数的影响
3、1、计算大小(有函数存在)
void func(char para[100])
{
void *p malloc(100);
printf(%d, %d\n, sizeof(para), sizeof(p));
}此时printf的结果是什么呢 对于char para[100]来说传到函数中的时候已经发生了改变传参的时候也只是会传首元素的地址。所以在计算的时候两个的结果都是4(32位下的指针的大小)。
3、2、计算大小(无函数存在)
在64位操作系统上下面程序返回结果是
int main()
{
int *k[10][30];
printf(%d\n, sizeof(k));
return 0;
}此时的大小不再指的是指针因为这个结构是指针数组那么计算的就是这个数组的大小然后呢数组中存储的是指针再64位上指针的大小是8个字节然后这个函数指针存储了300个指针所以结果是2400个字节。
3、3、形参和实参
#include stdio.h
void func(char *p) { p p 1; }
int main()
{
char s[] {1, 2, 3, 4};
func(s);
printf(%c, *s);
return 0;
}在调用的时候创建的只是形参形参对于原来的实参的拷贝在函数中的参数他们的生命周期只会在函数中离开函数就会销毁。所以p的改变不会对s的指向没有什么影响。这和链表中还是有区别的。
4、关于赋值
若有定义语句: char s[3][10],(*k)[3],*p; 则以下赋值语句错误的是 1.p s; 2.p k; 3.p s[0]; 4.k s; 下面哪些是错的 在没有强制类型转换的情况下只有类型完全相同的指针才能相互赋值。
char s[3][10]中s运算时会退化为数组指针类型是char ( * ) [10]。
char ( * k)[3]很明显k就是一个数组指针类型也为 char (*)[3]
char * p类型为char * 指针
s[0]代表二维数组第一行此时运算时会退化成为第一行的首元素的地址。 所欲对于答案来说答案是124。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/925610.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!