学习《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] ;

 

posted @ 2023-08-11 16:32  林长超  阅读(23)  评论(0)    收藏  举报