女山湖大闸蟹,兵马俑的资料,囤油宝
#include <stdio.h> int f(void); // 全局变量 int gall = 12; int main(int argc, char const *argv[]) { printf("in %s gall=%d\n", __func__,gall); f(); printf("agn in %s gall=%d\n", __func__,gall); return 0; } int f(void) { printf("in %s gall=%d\n", __func__,gall); gall += 8; printf("agn in %s gall=%d\n", __func__,gall); return gall; } // in main gall=12 // in f gall=12 // agn in f gall=20 // agn in main gall=20
如果函数内部存在与全局变量同名的变量,则全局变量被隐藏
#include <stdio.h> int f(void); // 全局变量 int gall = 12; int main(int argc, char const *argv[]) { printf("in %s gall=%d\n", __func__,gall); f(); printf("agn in %s gall=%d\n", __func__,gall); return 0; } int f(void) { // 这里定义一个名字相同的变量,那么全局的就被隐藏了 int gall = 1; printf("in %s gall=%d\n", __func__,gall); gall += 8; printf("agn in %s gall=%d\n", __func__,gall); return gall; } // in main gall=12 // in f gall=1 // agn in f gall=9 // agn in main gall=12
#include <stdio.h> int f(void); int main(int argc, char const *argv[]) { f(); f(); return 0; } int f(void) { static int all = 1; printf("in %s all=%d\n", __func__,all); all += 9; printf("agn in %s all=%d\n", __func__,all); return all; } // in f all=1 // agn in f all=10 // in f all=10 // agn in f all=19
下面的写法就是很危险的
#include <stdio.h> int* f(void); void g(void); int main(int argc, char const *argv[]) { int *p = f(); printf("*p = %d\n", *p); g(); printf("*p = %d\n", *p); return 0; } int* f(void) { int i = 12; // 返回本地变量的地址是危险的 return &i; } void g(void) { int k = 24; printf("k = %d\n", k); } // *p = 12 // k = 24 // *p = 24
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论