有没有办法使用sizeof函数和C中的指针来获取字符串的正确大小

问题描述 投票:0回答:2
int main() {
    char *s = "hello world!";
    printf("%d\n",sizeof(s));
}

我知道它将返回指针的大小。但是我想知道是否有任何方法可以使用带有指针的sizeof函数来获取字符串的长度。我不想让您使用(char s [])作为数组将其用作指针请尽快回复。

c pointers c-preprocessor function-pointers smart-pointers
2个回答
0
投票

strlen用于获取字符数组字符串的长度。请注意,该数组必须以零结尾,并且此函数具有线性复杂度。

strlen

0
投票

指针无论指向单个对象还是指向数组的第一个元素,都不会保留信息。

考虑以下示例

#include <stdio.h>
#include <string.h>

int main(void) {
    char const *s = "hello world!";
    printf("%zu\n", strlen(s)); /* Note `%zu` */
}

如图所示,相同的指针可以指向类型为char *p; char c = 'A'; p = "Hello"; p = &c; 的字符串文字“ Hello”和单个字符c。

通常,将字符数组传递给函数时,它会隐式转换为指向其第一个元素的指针。但是,如果将指针传递给整个数组,则可以使用sizeof运算符确定其大小。

例如

char[6]

但是这种方法的缺点是,在函数参数的声明中,您必须通过引用预先指定可接受的数组的大小。

© www.soinside.com 2019 - 2024. All rights reserved.