求解释发现的C++几个小问题
发布网友
发布时间:2022-04-21 10:34
我来回答
共5个回答
热心网友
时间:2023-11-09 17:42
第一个 传递的是指针 所以 sizeof 是指针的大小
第二个 int 是4字节 32位
第三个 你程序没写对
热心网友
时间:2023-11-09 17:43
1. sizeof(数组名)可以得到数组大小, sizeof(指针)只能得到4.
数组在传递参数以后, 会退化为指针, 所以sizeof得到4
2. +4是因为一个int占4个字节, 每个字节是8个bit. 但是内存从来不已bit的数目为单位, 所以是+4
3. ASCII码是0-47的字符很多是有特殊意义的, 可以查查ASCII表追问是不是说数组名并不完全等同于指针?
追答你好聪明啊
热心网友
时间:2023-11-09 17:43
1.不使用引用的话,数组参数只能拿到首地址也就是array[0]; so size=4;
2.指针加一 这个长度是sizeof(类型) 如果是double 那么就是8 如果是char 则=1;
3.字符型变量被赋值整形数字,这系统会直接强制转换成字符(根据ASCII)码 和输入输出流无关。
char a=32;
char b=a;
cout<<b;//b=? 试试追问这是……为什么不直接cout<<a,还要b=a?我就是这样输出的……
热心网友
时间:2023-11-09 17:44
1. sizeof(数组名)可以得到数组大小, sizeof(指针)只能得到4.
数组在传递参数以后, 会退化为指针, 所以sizeof得到4
2、你输出地地址只是在内存中的逻辑地址,是以字节为单位的
3、个人觉得是你的程序问题追问程序如下
char a;
for(int n=0;n<=47;n++,a=n){
cout<<a<<" ";
if(n%7==0&&n!=0)cout<<endl;
}
追答你把a=n拿到下面试一试
不过就算在上面 也不应该是w 我这边运行了一下 没有问题
热心网友
时间:2023-11-09 17:44
本来想说点什么,不过前面两个家伙说完了,另:你第三个问题描述的不够清楚。追问我的程序是这样的
char a;
for(int n=0;n<=47;n++,a=n){
cout<<a<<" ";
if(n%7==0&&n!=0)cout<<endl;
}
结果中不论令n初始为1、2、3最前面都会输出一个W
追答这个的话,你的a定义后没有初始化,第一次for循环是执行到n<=47时直接进入循环体,并没有执行a=n代码,因此你第一次输出的a应该是不确定值。不过我很好奇你是什么编译器怎么没有报错,如上面大哥所说,你的程序确实有问题。