int main() {
char *s = "hello world!";
printf("%d\n",sizeof(s));
}
我知道它将返回指针的大小。但是我想知道是否有任何方法可以使用带有指针的sizeof函数来获取字符串的长度。我不想让您使用(char s [])作为数组将其用作指针请尽快回复。
strlen
用于获取字符数组字符串的长度。请注意,该数组必须以零结尾,并且此函数具有线性复杂度。
strlen
指针无论指向单个对象还是指向数组的第一个元素,都不会保留信息。
考虑以下示例
#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]
但是这种方法的缺点是,在函数参数的声明中,您必须通过引用预先指定可接受的数组的大小。