学习《C和指针》的总结(1)
一、GDB,我使用的是notepad++,因为它轻量化,再用MinGW作为编译器,配置宏:Compile、Run和GDB。
GDB指令:
1、b 13 :在第十三行打断点
2、r :运行代码到第十三行
3、n :运行下一行代码
4、s :如果下一行是调用函数,使用此指令进入调用函数
5、p a :打印变量a的值,执行一次就打一次
6、display a :打印变量a的值,执行后,运行一行代码,就打印一次
7、c :持续运行直至下一个断点或者结束
8、jump 13 :跳回十三行代码
二、EOF :代表文件末尾,在输入完成后,换行,Windows下按(Ctrl+Z)代表EOF,Linux下按(Ctrl+D)代表EOF
三、Notepad++中给代码打注释,注释使用(Ctrl+K),取消注释使用(Ctrl+Shift+K)
四、要保证程序的可移植性,对于要应用不同硬件结构系统的程序要做不同的声明,例如char类型的变量的值控制在signed char 和 unsigned char 的交集中。
五、指针( char *str ; )和数组( char str[1000] ; )在调用时有一个区别是数组有分配的内存空间而指针没有,需要动态分配。
(在今天的第七章第六道编程题,传入指针,但打印传出值却没有,调试一小时,传入值和传出值地址都是一样的但是就是传不出来,然后我就找网上的代码看看哪里的差别,发现可能是指针和数组的区别,结果还真是,
我感觉这种情况是最容易让人崩溃的,编译器也不报错,但是传出的值就是没有或者是错的,就得慢慢debug,一行一行的看,看变量的值和地址,在传入和传出时是否发生变化,但是debug的时候代码也执行不下去就更崩溃了,就是那种信仰崩塌的感觉,
之前就一直相信没有debug还处理不了的问题,但是debug都进行不下去,问题就不知道从哪里入手进行解决了,上网寻找方法,也许还真的有可能的答案的,概率低但是又不是没有)
1 void 2 written_amount( unsigned int amount, char *buffer ) 3 { 4 if( amount == 0 ) 5 /* 6 ** Special case for zero. 7 */ 8 strcpy( buffer, "ZERO " ); 9 else { 10 /* 11 ** Store an empty string in the buffer, then begin. 12 */ 13 *buffer = '\0'; 14 do_one_group( amount, buffer, magnitudes ); 15 } 16 } 17 18 19 main(){ 20 21 unsigned int a = 0 ; 22 char *str ; 23 24 scanf("%d",&a); 25 written_amount(a,str); 26 printf("%d\n",a); 27 printf("%s\n",str); 28 29 }
要把第22行改为
1 char str[1000] ;

浙公网安备 33010602011771号