Python递归函数是指,在c语言程序中,对于递归函数和非递归函数

  Python递归函数是指,在c语言程序中,对于递归函数和非递归函数

  先看一个代码:

  # include stdio . h # include string . htypedef struct T { char * name;int num}测试;int main(){ test * p=(test *)malloc(sizeof(test));strcpy(p-name, Jim );printf(%s\n ,p-name);返回0;}上面的程序运行的时候编译的很好,但是因为strcpy(p-name, Jim )崩溃了;因为test *p=malloc()只创建了对象的大小,而没有让p中的name变量指向一个可用的地址。malloc()创建的时候,因为对象struct T中的名字是一个指针,大小只有4个字节,而且没有指向,所以是一个野指针。因此,给通配符赋值很容易导致程序崩溃。

  要修改,只需输入:

  typedef struct T { char name[20];//指针可以改为数组int num}测试;或者:

  typedef结构T { char * nameint num}测试;int main(){ test * p=(test *)malloc(sizeof(test));p-name=(char *)malloc(50);strcpy(p-name, hello world );printf(%s\n ,p-name);返回0;}也可以改成这样,只要结构的名字指针指向一个合意的内存,就没有问题。

  但是现在又出现了另一个问题:

  因为下面的代码没问题:

  int main(){ char * name;strcpy(姓名,文森特);printf(%s\n ,name);返回0;} char *name在这里也是一个野指针,但是为什么不会有问题呢?

  这个也不应该做,因为给野指针赋值总是很危险的,因为我不知道在哪里赋值。这里估计不会有问题,因为和编译器有关,但最好不要这样做,因为这是潜在的BUG。记住:不能往野指针赋值!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: