sizeof
struct {
int i;
char c1;
char c2;
} s1;
struct {
char c1;
int i;
char c2;
} s2;
struct {
char c1;
char c2;
char c3;
} s3;
struct {
double d;
char c1;
char c2;
} s4;
int main()
{
char* cp = "abcdef";
printf("%d\n", sizeof(cp));
//pointer to char -> 4
//pointer to char -> 4
char ca[] = "abcdef";
printf("%d\n", sizeof(ca));
//abcdef + '\0" -> 7
//abcdef + '\0" -> 7
char ca2[100] = "abcdef" ;
printf("%d\n", sizeof(ca2));
//100
//100
int ia[100];
printf("%d\n", sizeof(ia));
//100 * 4 -> 400
//100 * 4 -> 400
char* cp2 = (char*) sizeof(100);
printf("%d\n", sizeof(cp2));
//4
//4
printf("%d\n", sizeof(s1));
//8
//8
printf("%d\n", sizeof(s2));
//12
//12
printf("%d\n", sizeof(s3));
//3
//3
printf("%d\n", sizeof(s4));
//12
//12
return 0;
}
char f() {
return 'c';
}
int main()
{
int a = 0;
printf("%d\n", sizeof(a++) );
// sizeof integer -> 4
// sizeof integer -> 4
printf("%d\n", a);
// 0 (instruction in sizeof won't be executed)
// 0 (instruction in sizeof won't be executed)
printf("%d\n", sizeof(f()) );
// 1 (sizeof(function()) returns the size of the return type of the function)
// 1 (sizeof(function()) returns the size of the return type of the function)
printf("%d\n", sizeof(f) );
// 1 (same)
// 1 (same)
}
sizeof vs strlen
#include <stdio.h>
#include <string.h>
int main()
{
char *m = "abcde";
printf("%d\n", strlen(m));
char r[] = "abcde";
printf("%d\n", sizeof(r));
}
Output:
5
6
5
6
沒有留言:
張貼留言