编程理论知识及辨析
show_something
这个作者很懒,什么都没留下…
展开
-
函数与内存的问题
一.总述 函数在调用之后才会在内存中分配空间。而函数一系列活动在它自己的内存空间中,与main中元素无关(除了初始化),如果想改变main中元素,则需要使用指针间接访问 二.例子论证 不使用指针,按值传递 1 #include <stdio.h> 2 void swap(int a,int b) 3 { 4 int tem...原创 2019-01-26 09:43:38 · 386 阅读 · 0 评论 -
程序对内存的分配(部分内容)
一.理论讲解(针对32位操作系统) 内存具体分配 32位操作系统,每个操作系统都有2^32字节的虚拟地址空间,即4G的虚拟地址空间。这4G的虚拟地址空间分为两个大部分:每个进程独立的3G的用户空间(栈、堆、静态存储区、代码段),和所有进程共享的1G的内核空间。 图上呈现出来的内容的地址是逻辑地址(虚拟地址),若要对应真正内存中物理地址,需要使用MMU(内存...原创 2019-01-21 18:33:10 · 380 阅读 · 0 评论 -
数组、指针、字符串与内存
string a = "helloworld" 在内存的rodata区(只读数据段)中 char *p = "helloworld"; p在栈中,只分配1个字节,并且没有拷贝"helloworld"的功能,所以"helloworld"仍在rodata中 若此时再写*p=H;则表示修改rotate中的"helloworld",会有段错误出现 char a...原创 2019-01-21 18:50:29 · 119 阅读 · 0 评论 -
vim快捷键合集
曾经使用了两年多的Vim,手册也翻过一遍。虽然现在不怎么用vim了,曾经的笔记还是贴出来,与喜欢vim的朋友分享。 1. 关于Vimvim是我最喜欢的编辑器,也是Linux下第二强大的编辑器。 虽然emacs是公认的世界第一,我认为使用emacs并没有使用vi进行编辑来得高效。 如果是初学vi,运行一下vimtutor是个聪明的决定。 (如果你的系统环境不是中文,而你想使用中文的vim...转载 2019-01-28 09:10:58 · 184 阅读 · 0 评论 -
关于指针的三类辨析
一.普通指针int a[10]={};int *p=a;int *p=a中的右侧的a相当于&a[0],指针p指向数组a的第一个元素。 二.指针数组int *a[10];int **p=a;p是指向指针数组a的指针,a是指针数组,其中元素是int* 指针,所以p的类型是int **。 三.数组指针int a[10]={};int (*p)[...原创 2019-02-15 14:38:01 · 280 阅读 · 0 评论 -
结构体
一.typedef struct 与 structC编译器中 typedef struct typedef struct student { int ID; char name[20]; char sex; int age; }Stu;这样定义结构体,可以这样初始化 Stu s1={1,"xiaoming",'m',18...原创 2019-02-16 17:33:28 · 259 阅读 · 0 评论 -
数组在结构体中内存分配问题
数组及其他变量不在结构体中,在栈中#include <stdio.h>int main(){ int a=100; int b[2]; int c=200; int b[-1]=10; int b[2]=10; printf("%d %d",a,c); return 0;} 虽然定义时abc是顺序定...原创 2019-02-22 12:00:38 · 3038 阅读 · 0 评论