#include栈区int main() { // & 与 都是1为1 // | 或 有1为1 // ~ 取反 1变0 0变1 // ^ 异或 相同为0 不同为1 // << 左移 补0 // >> 右移 补符号位的值 int a = 1; int b = 2; a = a ^ b; b = a ^ b; a = a ^ b; return 0; }
#include堆区// 栈区 // 堆区 // 全局/静态区 // 字符常量区 //作用域 {} //局部变量 在作用域中声明的变量 存在栈区 //栈区 //生命周期 声明时出生 作用域结束时消亡 //使用范围 所声明的作用域内 //特性 没有 int *AA() { int a = 100; return &a;//不要将局部变量的地址作为返回值返回 } int main() { int* p = AA(); printf("%dn", *p); printf("%dn", *p); printf("%dn", *p); printf("%dn", *p); return 0; }
#include全局区#include //堆区 手动申请的空间 malloc //生命周期 出生 malloc 消亡free //使用范围 整个程序 //特性 没有 // //void* 泛型指针 没有类型的指针 int* AA() { int* p = (int*)malloc(4); *p = 100; //free(p); return p; } int main() { int* p = AA(); printf("%dn",*p); printf("%dn", *p); free(p);//必须是申请空间时的首地址 printf("%dn", *p); printf("%dn", *p); //手动申请的空间必须回收掉 return 0; }
#include//全局变量 静态区 //生命周期 出生 程序执行时 消亡 程序执行时 //适用范围 整个程序 //特性 默认初始化为0 //当局部变量和全局变量重名时 优先识别局部变量 int a; int* AA() { int a; a = 100; return &a; } int main() { int* p = AA(); printf("%dn", *p); printf("%dn", *p); printf("%dn", *p); printf("%dn", *p); return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)