-
查看字符内存:x/数量c单位
查看全部 -
代码段不能随便修改,堆和栈可以修改
查看全部 -
查看内存:x(输出内存的值)/3(显示值的数量)d(以十进制显示) 0x7fffffffde14(从哪个地址开始显示
查看全部 -
若“p”是一个地址,则“*p”是到这个地址去取里面的值,“(*p)”把表示为一个整体,“(*p)(数据)”若p为代码段,则调用这个函数,传参数"数据"进去。
若地址指向的是栈和堆,操作系统会把栈或者堆的具体数据取出来,若地址指向的不是一个栈或者堆,而是代码段的话,操作系统会认为是指向某一个函数
查看全部 -
栈的特点:先进后出
查看全部 -
最先分配的栈地址会大些,和代码段相反
查看全部 -
32位操作系统,指针占4个字节
64位操作系统,指针占8个字节
查看全部 -
3.指针的本质就是地址
查看全部 -
2.
查看全部 -
1.
查看全部 -
1.
查看全部 -
C语言在内存中数据的存储位置 char a[] = “linux” 占6个字节,a存储的是首地址,“linux”可以在栈,也可以在堆中 char *p = “linux” 占10个字节,p指针变量占4字节,里面保存的是后面字符串的地址,“linux”占6个字节,存储在代码段。 但字符串要更加灵活: linux栈中: char a[] = “linux” char *p = a; 在代码段: char *p = “linux” 在数据段: 全局的char a[] = “linux” void main() { char *p = a; } 在堆中: 就使用malloc查看全部
-
函数指针
int quadraate(int a);是一个函数
int (*pquadrate)(int a)=&quadrate;则是指向这个函数的指针!
int s=(*pquadrate)(a)可以调用函数!
查看全部 -
#include <stdio.h>
int main()
{
int var = 10;
int *ptr_var;
ptr_var = &var;
printf(" var 的值是: %d", var);
printf("\n var 的内存地址是: %x", &var);
printf("\n 指针ptr_var 的地址是: %x\n", &ptr_var);
printf("\n var 的值是: %d", *ptr_var);
printf("\n var 的地址是: %x\n", ptr_var);
return 0;
}
查看全部 -
一根地址总线只能表示2种状态,要么0,要么1; 两根地址总线可以表示4种状态,00,11,10,01。 ...... 同理32根地址总线也就是32bit的操作系统可以表示2的32次方种状态。也就是2的32次方个地址。 也就是2的32次方个字节。 软件系统是不通bit的,2的32次方算出来的单位是4294967296个存储地址,而操作系统的能识别的最小单位是byte,所以我们设计操作系统的,给4294967296个存储地址,每个地址分1个byte,所以总共操作系统有4294967296byte,就是4GB。查看全部
举报