zoukankan      html  css  js  c++  java
  • 一个教科书一般的“空指针”错误

    #include <stdio.h>
    #include <afx.h>
    /*void my_strcpy(char *s,char *t)
    {
    	int i = 0;
    	while ((s[i] = t[i]) != '\0')
    		i++;
    }
    */
    void my_strcpy(char *s,char *t)
    {
    	ASSERT ((s!=NULL)&&(t!=NULL));
    	while ((*s = *t) != '\0')
    	{
    		s++;
    		t++;
    	}
    }
    
    int main()
    {
    	char *raw = "abcd";
    	char *dest = NULL;
    	printf("%s\n",raw);
    	my_strcpy(dest,raw);
    	printf("%s\n",dest);
    	return 0;
    }

    指针,理论懂了,但是,用的时候一不小心就会犯错,这不,今儿我又来一出,记到这里,警示自己

    正确的应该如下:

    #include <stdio.h>
    #include <afx.h>
    /*void my_strcpy(char *s,char *t)
    {
    	int i = 0;
    	while ((s[i] = t[i]) != '\0')
    		i++;
    }
    */
    void my_strcpy(char *s,char *t)
    {
    	ASSERT ((s!=NULL)&&(t!=NULL));//使用断言进行入口检查
    	while ((*s = *t) != '\0')
    	{
    		s++;
    		t++;
    	}
    }
    
    int main()
    {
    	char *raw = "abcd";
    	char *dest = NULL;
    	dest = (char *)malloc(4);//指针声明以后,一定要指向有意义的内存,才能使用,否则就是空指针。
    	printf("%s\n",raw);
    	my_strcpy(dest,raw);
    	printf("%s\n",dest);
    	return 0;
    }



  • 相关阅读:
    04 UUID
    MD5加密算法(信息摘要算法)、Base64算法
    03 MD5加密、Base64处理
    MVC分层思想、SSM编程架构
    1网络编程基本概念
    Tomcat闪退的解决办法
    win10下的jdk1.8安装
    枚举练习
    1000元买物品分配
    win10解决vc++6.0不兼容问题方法
  • 原文地址:https://www.cnblogs.com/javaadu/p/11742720.html
Copyright © 2011-2022 走看看