我試圖了解"static"修飾符在 C 中是如何作業的,我去尋找它的含義,我發現的一切似乎都有些模糊。
它是一個修飾符,允許變數的值一直存在到程式執行結束。
我理解它的含義和目的,但除了這個定義之外,我想了解它在下面是如何作業的,所以我生成了 C 代碼的程式集
char *thing(char *a)
{
char *b;
b = malloc(3);
b[0] = 'y';
b[1] = '\0';
return (b);
}
char *some(int fd)
{
static char *a = "happened";
a = thing(a);
return (a);
}
我用非靜態a變數創建了另一個代碼并得到了這個
/* With static variable */
.file "static_test.c"
.text
.globl thing
.type thing, @function
thing:
.LFB6:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
subq $32, %rsp
movq %rdi, -24(%rbp)
movl $3,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/487794.html
