migrate from https://cmakerhk.wordpress.com/2018/09/28/sizeof-vs-strlen/
Sizeof()
#includeint main() { printf("%d\n",sizeof(char)); // output 1 printf("%d\n",sizeof(int)); // output 4 printf("%d\n",sizeof(float));// output 4 printf("%d", sizeof(double));// output 8 return 0; } |
#includeint main() { int arr[] = {1, 2, 3, 4, 7, 98, 0, 12, 35, 99, 14}; printf("Number of elements :%d", sizeof(arr)/sizeof(arr[0])); return 0; } |
Number of elements :11This is useful for getting the number of the elements of an array.
allocate memory dynamically - To allocate block of memory dynamically.
int *ptr = malloc(10*sizeof(int)); |
size_t strlen(const char *str)not include \0
//========compare
Since strlen() not inlclude \0
// C program to demonstrate difference // between strlen() and sizeof() #include#include int main() { char str[] = "November"; printf("Length of String is %d\n", strlen(str)); //8 printf("Size of String is %d\n", sizeof(str)); //9} |
#include #include using namespace std; int main() { char a[] = {"Geeks for"}; char b[] = {'G','e','e','k','s',' ','f','o','r'}; //9 char total cout << "sizeof(a) = " << sizeof(a); cout << "\nstrlen(a) = "<< strlen(a); cout<< "\nsizeof(b) = " << sizeof(b); cout<< "\nstrlen(b) = " << strlen(b); return 0; } |
strlen(a): 9 // not include the NULL
sizeof(b): 9 // total 9 char ma
strlen(b):11 // abnormal
ref:
https://www.geeksforgeeks.org/sizeof-operator-c/
https://www.tutorialspoint.com/c_standard_library/c_function_strlen.htm
https://www.geeksforgeeks.org/difference-strlen-sizeof-string-c-reviewed/