-
"world"在代码段,是在程序编译或运行时加载进去的,是不允许程序员再去修改的,因而阻止了scanf的操作。 程序员可以操作的是堆栈,像声明好函数后它就被加载到堆栈中,还有malloc()操作也是对堆栈的操作,为程序分配内存空间。查看全部
-
x/6cb 字符数组的首地址:打印出6个连续的字符查看全部
-
而赋值操作也可以由p+=3; *p=101;变成简单的p[3]=101;查看全部
-
只要在内存中连续分布,指针的操作p+=3和p[3]是一样的。查看全部
-
x/10d 起始地址:以4个字节为单位往后取10个值查看全部
-
虽然从来没用到过函数指针,不过说白了就是这样: int quadrate(int a); // main中 int a=3; int (*p)(int a); p = &quadrate; int s = (*p) (a); //最后就相当于s(a)查看全部
-
同一个函数可以被多次调用,但内部的静态变量是始终不变的查看全部
-
全局变量int global;和常量const int i;在数据段查看全部
-
`gcc -g main2.c -o main2.out` 加了`-g`参数生成的可执行文件才能被gdb调试 但依然不能删除源代码 然后用gdb命令读取可执行文件:`gdb ./main2.out` l(list的缩写)列出部分源码,再按enter,即再执行l,反复操作,直到能够完整显示全部源码 start:开始调试 p:打印,此时`p a`打印出的a值为0,说明此时`int a=5;`还未生效,需要跳到下一行 n:执行一行,完成后跳到下一行,此时`p a`才打印出5 s:执行一行,如果此行代码中有函数调用,则进入该函数,然后不停`n`可以一行行地执行 bt:查看函数堆栈,此时,#0是change,#1是main f:切换堆栈,此时`f 1`跳回main函数,这里还没有执行change q:退出调试查看全部
-
同类型变量会放一起,好处:方便地址对齐查看全部
-
指针变量char *str2 = "hello",用scanf 向str2中输入字符串出错,其实也可以这么理解,指针str2只是指向一个地址,从这个地址开始写入"hello",没有指定内存长度,没有空间去容纳字符串。内存溢出!这个与char str[] = "hello"不同,str已经有了6个字节的内存空间,查看全部
-
如果指针p已指向数组中的一个元素,则p+1(p++)指向同一数组中的下一个元素,而不是将p的值简单的加1。 p += 3 表示将指针向下移动3个元素。查看全部
-
静态变量 static关键字。函数调用结束后,静态变量的值不消失。对一个C文件里的全局变量和函数加入static的申明 可以防止被其他C文件误调用,即限定作用域只是当前文件,其他文件中即使有同名变量和函数也不影响。查看全部
-
来一个查看全部
-
32位系统指针变量占4个字节,64位系统,要占8个字节,这还是第一次听,涨姿势了!查看全部
举报
0/150
提交
取消