-
用x命令可以每次输出多个, 格式:x/个数 d 地址
d十进制
查看全部 -
内存地址从大到小依次为系统内核,栈,堆,数据段,代码段。
查看全部 -
32 bit 指针 4个字节
64 bit 指针 8个字节
查看全部 -
变量名只是个代号
变量的本质就是内存
指针保存内存地址
查看全部 -
32位:内存编号只能编到32个二进制位
操作系统:管理内存,编号,规划。
用户内存隔离:避免系统内存故障
查看全部 -
单位:字节(Byte)
1 Byte=8 bit
0~9 A BCD E F 10 (0*表示16进制)
计算用二进制 显示用十进制 编程用十六进制
查看全部 -
f 1
f 2
切换函数栈
查看全部 -
#include<stdio.h>
int main(void)
{
char str[] = "hello";
char *str2 = "world";
char str3[100];
printf("input the value \n");
scanf("%s", str3);
printf("str is %s\n", str);
printf("str2 is %s\n", str2);
printf("str3 is %s\n", str3);
}查看全部 -
1.论视频中出现的*p=&a和p=&a
请注意第一次时 int *p 是指针声明 =&a 这是赋值。第二次的 p=&a 也是赋值 但是p前面没有加* 因为已经声明过了 除了声明地方之外的*p 意义为:取p这个指针变量所指向的地址中的值
2.p++:指针偏移,运行效率高
3.p+3与*p+3区别:前者是把现指针向下移动三格,后者是对指针所指地址的变量进行操作(数学运算加3)
(Plus:p+=3与p=p+3等同,加的是步数,原理跟p[3]一样)
4.为什么p+4;*p=101 与p[4]=101等价???p[4]=101代表从初始位置(a的地址就始)以四个字节为一步,向前走4步,到达某个位置,然后对这个位置进行初始化赋值,即把101赋给这个地址所代表的内存空间。p[4]代表从初始位置(a的地址就始)以四个字节为一步,向前走4步,到达某个位置。*p=101,代表此时指针指向的地址(即走了四步后所在位置)并对这个地址所在的内存空间进行初始化,赋值为101。
5.i为什么1? GCC的优化,i是整形,在地址a之后。i初始0,循环一次后指针指向i,此时i+1=1(i++)
6. 指针如何指向数组?e.g: ①int a[3]={1,2,3}; int(*p)[3]=&a
②int *pa=array; pa[0]=1; pa[2]=2; pa[2]=3;
查看全部 -
在程序中使用了一个未被声明的变量所指向的内存空间,则会生成一个随机的值(代码幽灵-不可控)
程序中声明的同一种变量在内存中连续排列
查看全部 -
在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区.
代码段:把源代码编译完成为目标文件的代码,函数等
数据段:全局变量、常量、静态变量等
调用的函数指针的顺序就存放在栈内存,可以理解为栈的先进后出就是函数的调用的顺序
64进制内指针所占内存均为8字节,而32进制中为4字节。
查看全部 -
字节 K M G T P E...
查看全部 -
32位操作系统最多可以管理4G内存
查看全部 -
*pa=array
array本身就是个地址,所以不用加&
array类似是指针常量
*pa类似指针变量,
*pa=&a后又有p=&a?
因为做了6次的p++的指针操作,在新的循环开始之前,要把p指向的位置重新挪回指向a的地址
查看全部 -
P[4]=101后
arr[2]=101
查看全部
举报