C- Program: Interview questions s1
TIL
594
Male avatar

identify viết ngày 28/08/2017

Câu hỏi phỏng vấn - C Program - phần 1

1. Sự khác nhau của declaration and definition

  • Declaration of a variable/function simply declares that the variable/function exists somewhere in the program but the memory is not allocated for them
  • definition as a super set of declaration. that mean It declaration and allocates memory
  • ex
  • // This is only declaration. y is not allocated memory by this statement 
    

    extern int y;

    // This is both declaration and definition, memory to x is allocated by this statement
    int x;

2. khi nào thì nên dùng con trỏ

  • lưu địa chỉ của 1 biến
  • dùng để pass to fuction as reference. cho phép các fuctions khác có thể chia sẻ và thay đổi giá trị biến đó
  • to pass large structs
  • Implement "linked" data structures like linked listed and binary trees

3 hiểu như nào về từ khóa static

  1. variable staic
* Syntax: static data_type var_name = var_value; 
  • Biến static sẽ được duy trì trong suốt thời gian chạy của chương trình. Các biến thông thuơng sẽ bị hủy khi hàm định nghĩa biến đó kết thúc
  • #include<stdio.h>
    int fun()
    {
      static int count = 0;
      count++;
      return count;
    }
    
    int main()
    {
      printf("%d ", fun());
      printf("%d ", fun());
      return 0;
    } 
    

    out put: 1 2

  • Biến static sẽ đc cấp phát bộ nhớ ở data segment not stack segment
    ~Memory image

  • biến static giống như biến global. Sẽ đc khởi tạo bằng 0 nếu không đc khời tạo rõ ràng

2.   Static fuction
  • Trong C, Fuctions are global by default . Khi fuctions đc định nghĩa static. nghĩa là chúng ta hạn chế việc truy cập fuctions đó từ những file khác.
  • ex
  • file1.c
    *

      /* Inside file1.c */
      static void fun1(void)
      {
        puts("fun1 called");
      }
    
  • file2.c

  •   /* Iinside file2.c  */
      int main(void)
      {
        fun1(); 
        getchar();
        return 0;  
      }
    

will be error "undefined reference to `fun1" with compile as gcc file1.c file2.c
.

.

4 Define your sizeof

#define my_sizeof(type) (char *)(&type+1)-(char*)(&type)
  • Giá trị trả về của hàm printf() là số ký tự in đuơc
  •  int main()
    {
      printf(" %d", printf("%s", "geeksforgeeks"));
      getchar();
    }  
    

    ouput: 13

return of scanf là số biến đọc đc

5. Sự khác nhau của Struct và Union

  • Struct: Kích thước của struct >= tổng kích thước của các phần tử trong struct. mỗi phần tử sẽ đc cấp phát 1 vùng nhớ. Có thể truy cập nhiều phần tử trong 1 thời điểm
  • Sizeof(struct) >= sum(sizeof(element))

  • Union : kích thước của union >= Kích thước của phần tử có kích thước lớn nhất. tất cả các phần tử sẽ đc cấp phát chung vùng nhớ. vì vậy chỉ có thể gán giá trị cho 1 phần tử ở 1 thời điẻm

  • sizeof(union) = sizeof(max_space-elememt)
    - union{int x, y} p;
    p.x = 100 /*y also = 100 if we printf p.x and p.y*/

6. định nghĩa fuction chạy trước hoặc sau main with gcc build

#include<stdio.h>

/* Apply the constructor attribute to myStartupFun() so that it
    is executed before main() */
void myStartupFun (void) __attribute__ ((constructor));


/* Apply the destructor attribute to myCleanupFun() so that it
   is executed after main() */
void myCleanupFun (void) __attribute__ ((destructor));


/* implementation of myStartupFun */
void myStartupFun (void)
{
    printf ("startup code before main()\n");
}

/* implementation of myCleanupFun */
void myCleanupFun (void)
{
    printf ("cleanup code after main()\n");
}

int main (void)
{
    printf ("hello\n");
    return 0;
}

Output:
startup code before main()
hello
cleanup code after main()

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

Male avatar

identify

2 bài viết.
0 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Bài viết liên quan
White
0 2
fCC: Technical Documentation Page note So I have finished the HTML part of this exercise and I want to come here to lament about the lengthy HTML ...
HungHayHo viết 1 tháng trước
0 2
White
19 1
Toán tử XOR có tính chất: + A XOR A = 0 + 0 XOR A = A Với tính chất này, có thể cài đặt bài toán sau với độ phức tạp O(N) về runtime, và với O(1)...
kiennt viết gần 2 năm trước
19 1
White
1 1
Chào mọi người, hôm nay mình viết một bài TIL nhỏ về cách lấy độ phân giải của màn hình hiện tại đang sử dụng. xdpyinfo | grep dimensions Kết quả...
namtx viết 12 tháng trước
1 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


Male avatar
{{userFollowed ? 'Following' : 'Follow'}}
2 bài viết.
0 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!