sizeof,strlen,二级指针,gdb

strlen()返回的是字符串的长度 

使用malloc为字符串申请内存时必须申请+1的长度以便存放整个字符串

int ( * s[10] )( int )  定义了一个含有10个函数指针的数组,数组长度为10,数组元素的类型是指向函数的指针。


运算符sizeof:返回值为size_t 型,而size_t定义为typedef unsigned int size_t,也就是说一个unsigned int 型,用%u或%lu输出,使用%d等会出现警告但不影响运行结果。

计算所分配的数组占用空间的大小,不受数组使用程度的影响,在编译时已经分配。

函数strlen:在运行时计算,参数只能是字符型指针(char *),且必须是以'\0\结尾。当以数组形式传入时,实际上数组已经退化为指针。


int **p,*q;

int arr[10];

p=&arr;此赋值方法错误,不同类型的指针不能进行相互赋值。

修改如下:q=arr;  

                   p=&q;用指针q进行过渡。       


gdb 调试

-g 如果要使一个可执行文件被gdb调试,那么 使用gcc 编译运行时加入-g.
quit命令退出gdb
(gdb)
显示查找程序源代码 list / list 5 10 / list a.c:,10 / list ger_num / list q.c get_num
gdb 下使用linux 命令前加    shell

设置断点
1、break 行号
2、break 函数名
3、break 行号或函数名 if 条件
4、 watch 条件表达式
gdb 运行后,以命令watch i==99 设置断点,gdb提示当前程序上下文没有i。这是因为此时该程序没有韵词那个因而i为定义。  可先在定义i之后设置断点然后运行。这时i被定义。再设置断点watch i==99 。然后删除之前的断点。

控制程序的执行
1、continue 命令让程序继续运行直到下一个断点或程序完。
2、next (n)命令和step( n )命令   nexti(ni)和step(si)类似,只是语句分开执行。
区别:如果遇到函数调用,next仅把函数当一条语句来执行,再次输入next执行函数调用后的语 句。    而step则会跟踪进入函数,一次一条执行,知道函数里完了,才执行函数调用后的语句。

info breakpoints 使用此命令可以查看所有断点

disable 断点编号  使某断点失效
disable 断点编号  使某断点恢复有效

删除断点
1、clear  删除程序中所有断点
2、clear 行号   删除该行所有断点
3、clear 函数名  删除该函数的断点
4、delete 断点编号  删除指定编号的断点

whatis 变量或表达式
用来显示该变量或表达式的数据类型

set命令
set variable 变量=值  用来给变量赋值

kill 结束当前调试

t

-g 如果要使一个可执行文件被gdb调试,那么 使用gcc 编译运行时加入-g.
quit命令退出gdb
(gdb)
显示查找程序源代码 list / list 5 10 / list a.c:,10 / list ger_num / list q.c get_num
gdb 下使用linux 命令前加    shell

设置断点
1、break 行号
2、break 函数名
3、break 行号或函数名 if 条件
4、 watch 条件表达式
gdb 运行后,以命令watch i==99 设置断点,gdb提示当前程序上下文没有i。这是因为此时该程序没有韵词那个因而i为定义。  可先在定义i之后设置断点然后运行。这时i被定义。再设置断点watch i==99 。然后删除之前的断点。

控制程序的执行
1、continue 命令让程序继续运行直到下一个断点或程序完。
2、next (n)命令和step( n )命令   nexti(ni)和step(si)类似,只是语句分开执行。
区别:如果遇到函数调用,next仅把函数当一条语句来执行,再次输入next执行函数调用后的语 句。    而step则会跟踪进入函数,一次一条执行,知道函数里完了,才执行函数调用后的语句。

info breakpoints 使用此命令可以查看所有断点

disable 断点编号  使某断点失效
disable 断点编号  使某断点恢复有效

删除断点
1、clear  删除程序中所有断点
2、clear 行号   删除该行所有断点
3、clear 函数名  删除该函数的断点
4、delete 断点编号  删除指定编号的断点

whatis 变量或表达式
用来显示该变量或表达式的数据类型

set命令
set variable 变量=值  用来给变量赋值

kill 结束当前调试




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值