我应该如何在 C++ 中查找字符数组的长度?我已经尝试了两种方法,但它们都导致数组中的字符数错误。到目前为止,我已经使用了strlen和sizeof运营商,但无济于事。
void countOccurences(char *str, string word)
{
char *p;
string t = "true";
string f = "false";
vector<string> a;
p = strtok(str, " ");
while (p != NULL)
{
a.push_back(p);
p = strtok(NULL, " ");
}
int c = 0;
for (int i = 0; i < a.size(); i++)
{
if (word == a[i])
{
c++;
}
}
int length = sizeof(str); //This is where I'm having the problem
string result;
cout << length …Run Code Online (Sandbox Code Playgroud) 以下是程序的文本:
#include <stdio.h>
int f(int x){
return x+1;
}
int main() {
int (*p)(int) = f;
printf( "%d\n", sizeof(p) );
printf( "%d\n", sizeof(f) );
}
Run Code Online (Sandbox Code Playgroud)
该图像与 C 代码相关,我的问题仅针对 C。
这f是函数的名称,并且p是指向该函数的指针f。
由于p最终是一个地址,因此根据地址总线的大小,输出结果sizeof(p)为真,这完全没问题。
这里f也是指向函数f。所以最终f也是一个地址。
我的主要问题是为什么 的输出sizeof(f)不是8,为什么是1以及如何是1?
可能重复:
如何使用sizeof查找变量的大小
使用C,我们可以在不使用sizeof运算符的情况下以某种方式找到指针的大小吗?虽然我在google搜索时在很多地方发现了这个问题,但我找不到任何答案.任何帮助将不胜感激.谢谢
void myfunc(char* passedArray)
{
cout << sizeof(passedArray) << endl; // prints 4
}
int main(void)
{
char charArray[] = "abcdefghiklmop";
cout << sizeof(charArray) << endl; // prints 15
myfunc(charArray);
cout << sizeof(charArray) << endl; // prints 15
}
Run Code Online (Sandbox Code Playgroud)
我相信它应该仍然在该函数内打印15 ...
我试图测试的差异sizeof和strlen,但我发现了一些奇怪的今天.代码如下.
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char a[]={"I am a boy"};
char b[]={'I',' ','a','m',' ','a',' ','b','o','y'};
cout << "sizeof(a) = " << sizeof(a) << endl << "sizeof(b) = " << sizeof(b) <<endl;
cout << "strlen(a) = "<< strlen(a) << endl << "strlen(b) = " << strlen(b) << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
结果如下:
sizeof(a) = 11
sizeof(b) = 10
strlen(a) = 10
strlen(b) = 11
Run Code Online (Sandbox Code Playgroud)
我知道结果的前三行,但我不明白为什么strlen(b)是11.有人可以帮我吗?
所以我在看这段代码:
#include <stdio.h>
struct Student {
int id;
char name[32];
} s, *sp;
int main() {
printf("sizeof(structStudent) = %u\n", sizeof(structStudent));
printf("sizeof(s) = %u\n", sizeof(s));
printf("sizeof(structStudent*) = %u\n", sizeof(structStudent*));
printf("sizeof(sp) = %u\n", sizeof(sp));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出如下:
sizeof(struct Student) = 36
sizeof(s) = 36
sizeof(struct Student*) = 4
sizeof(sp) = 4
Run Code Online (Sandbox Code Playgroud)
为什么尺寸为struct Student*4,为什么尺寸sp也是4?我的powerpoint没有详细说明这一点.我知道为什么的大小struct Student和s为36:因为32个char(对于一个字节+4字节int)= 36总.
以下代码的输出是:
Hello World4
怎么样?
#include "stdio.h"
int func()
{
return(printf("Hello world"));
}
int main()
{
printf("%d",sizeof(fun));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
PS: - 据我说,sizeof()调用func()函数,其中返回statemnt调用printf函数打印hello world nd返回字符串的长度为11返回函数然后sizeof()函数返回11的大小是int和int的值取决于编译器2或4
我用这两条简单的线条得到了一个奇怪的结果
char* reverse = (char*) malloc(sizeof(char)*19);
cout << sizeof(reverse)/sizeof(char) << endl;
Run Code Online (Sandbox Code Playgroud)
无论我放在第一行的数字(在这个例子中,它是19).我总是得到4作为输出.怎么了 ?谢谢.
#include<stdio.h>
int main() {
short int i=20;
char c=97;
printf("%d,%d,%d",sizeof(i),sizeof(c),sizeof(c+i));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
假设给定short int = 2的大小,char为1而int为4B Well如果我在机器上运行则给出2,1,4但是ans是2,1,2
我正在努力 sizeof()
当我输入参数为char数据类型时
J=sizeof(char);
Run Code Online (Sandbox Code Playgroud)
它输出为1.
但是当我进入这样的论点时
J=sizeof('A');
Run Code Online (Sandbox Code Playgroud)
我输出为4.
由于它的参数是char数据类型,它应该返回1作为输出,为什么它返回4/2(取决于32位/ 64位设备).