1
#include <stdio.h>

int main()
{
        char * name  = "bob";
        int x = sizeof(name);
        printf("%s is %d characters\n",name,x);
}

上記のコードがあります。この文字列の文字数を出力したい。8の代わりに印刷を続けます3。なんで?

4

3 に答える 3

2

sizeof()バイトサイズを返します。具体的には、オペランドの型のオブジェクトを格納するために必要なバイト数を示します。この場合sizeof()、文字列へのポインターのバイト サイズが返されます。これは、コンピューターでは 8 バイト、つまり 64 ビットです。

strlen()あなたが探しているものです:

#include <stdio.h>
#include <string.h> // include string.h header to use strlen()

int main()
{
        char * name  = "bob";
        int x = strlen(name); // use strlen() here
        printf("%s is %d characters\n",name,x);
}
于 2013-11-08T14:51:17.310 に答える
1

strlen文字列の長さを見つけるために使用します。

各文字は少なくとも 1 バイト幅です。ポインターを取得する8ため、印刷されます。マシンでは、ポインターはバイト幅です。sizeofbob8

于 2013-11-08T14:53:33.800 に答える
0

strlen文字列内の文字数を示します。 sizeofオブジェクトのサイズをバイト単位で示します。あなたのシステムでは、 type のオブジェクトchar *は明らかに 8 バイト幅です。

于 2013-11-08T14:54:22.437 に答える