#include<iostream>
using namespace std;
int main(){
double a;
double b[10];
char *c;
char r[12]="appleeeeeee";
c=r;
cout<<sizeof c<<endl; //Why is this 8 and not equal to 12 i.e sizeof(r)
cout<<sizeof r;
}
问题1。数组名不是指向数组开头的指针吗??如果是这样,那么为什么sizeof运算符在上述代码中计算为两个不同的值。
i、 e为什么sizeof c
产生8,而sizeof r
产生12,即使它们都指向一个字符。
为什么在第二种情况下打印数组的大小?
这个问题看起来像是这个问题的复制品,但它不能回答我的问题。
sizeof c
报告的是指针的大小,而不是它所指向的内容(您所在的系统中有64位指针,因此容纳指针的大小为8)。即使是sizeof*c
也没有帮助,因为指针指向r
的第一个元素,而不是“数组”,所以sizeof*c
只会报告与sizeof r[0]
相同的事情,即1
。
在许多情况下,数组衰减为指向第一个元素的指针。但是sizeof
运算符却不是这样。它可以区分数组和指针,并给出正确的值。由于c
是指向char
的指针,因此您得到的值是指针的大小。事实上,c
包含r
的第一个元素的地址并不重要。
此外,sizeof
运算符的值是在编译时计算的,因此变量可能具有的任何值都与sizeof
无关。唯一的例外是C语言中的可变长度数组。
我已经运行这个程序好几次了,每次最后打印的p和g的值都是一样的。我不太确定为什么会这样——malloc不能在理论上选择内存中的任何位置让p和g指向吗?为什么p 8总是等于g?如果能澄清,将不胜感激。 谢谢
我当时在做一个计算机科学测试,并尝试了这个问题。 据我所知,我认为打印输出是假的,因为据我所知,字符串只能与。等于()。但我弄错了。它说答案是假的,是真的。有人能解释一下原因吗?
在下面的结构中,数组与指向字符的指针相比有什么好处: 或 我看到的一个优点是,使用更容易区分“未提供字符串”和“提供空字符串”,而且它比数组占用更少的空间。 此外,在这两种情况下,我可以初始化: 另一方面,我不能轻易地在上使用,它必须是分配内存上的有效指针。 那么,还有什么好处呢?
主要内容:到底使用字符数组还是字符串常量C语言中没有特定的字符串类型,我们通常是将字符串放在一个字符数组中,这在《 C语言字符数组和字符串》中已经进行了详细讲解,这里不妨再来演示一下: 运行结果: https://www.xnip.cn https://www.xnip.cn 字符数组归根结底还是一个数组,上节讲到的关于 指针和数组的规则同样也适用于字符数组。更改上面的代码,使用指针的方式来输出字符串: 运行结果: https://ww
我们正在使用dexguard,并且在dexguard项目中还具有以下设置。文本 我还尝试了提供res/值/字符串的变体。类似xml的: 和 等 在小路上。但字符串的键值正在变得模糊。 正在返回0。(其中key是字符串值)。 我也试过了 避免字符串OBF指令的正确方法是什么?
我尝试了以下代码,但不理解输出: 输出:字符串 为什么? 感谢您的关注!