C语言指针的应用程序

C语言指针的应用程序,第1张

你的代码里有多处错误,C语言基本功还要加强。

我改了一下你的代码,你看一迹册看。

#include <stdio.h>蔽虚

#include <string.h>

/*这个函数声明有两处错误

  一处是没有返回结果,字符比较的差值没有地方返回;

  一处是函数名称和标准库里的冲突,应该改成其他的名字,避免冲突*/

int mystrcmp(char*,char *)

int main(void)

{

    char s1[100],s2[100]    /*这里定义的变量s没什么用*/

    char *p1,*p2    /*其实这两个指针p1和p2也没什么用,在调用mycompare时可以直接用s1和s2。当然用了也没什么问题*/

    int result

    p1=s1

    p2=s2

      printf("please input p1string:\n")

 宏州燃   gets(s1)

    printf("please input p2string:\n")

    gets(s2)

    result=mystrcmp(p1,p2)    /*这个地方明显是希望比较函数有返回值的*/

    printf("Compared result:%d",result)    /*上面的result不用,用s这个没赋过值的变量明显是错误的*/

    return 0

}

int mystrcmp(char*p1,char *p2)    /*这里的定义和上面声明不一致,明显多了一个p*/

{

    int i,j, p

    for(i=0,j=0i<strlen(p1)||j<strlen(p2)i++,j++)    /*这里的判断条件应该改成||, 用逗号运算符只会选取后面表达式的值作为判断依据,逻辑上是不对的*/

    {

            if(p1[i]==p2[j])

                p=0

         else

                p=*(p1+i)-*(p2+j)

         if(p!=0)

             break

    }

    return p    /*最后把p返回出去*/

}

app空指针异常闪退原因有对象为空或为null、出现异步线程问题和调用系统AIP问题。

1、对象为空或明困为null:这可能是最常见的空指针异常原因,出现时需要在代码中检查所有涉及到的指针或对象是否为空或为null。清槐知

2、出现异步线程问题:如果异步线程没有正确处理对象和数据的情况,也可能导致空指针异常闪退。

3、调用系统API的问题:如果应用程序在调用系统API时没有正确处理回调,也可能导致空答消指针异常闪退。

1、指针的优点

是标识一块内存。电脑内存上的每一个字节都具有一个编号,称为地址(可以简单理解为指针),任何读写内存的指令都必须携带地址信息,否则电脑不知道读写那块内存。

不管程序是用什么语言写激郑的,要运行数据和代码必须驻留内存,CPU要执行指令必须有一个“指针”程序计数器指向内存的代码块厅册,如果某个指令要 *** 作内存数据,该指令必须携带额外的地址信息。

2、指针的缺点

指针可以 *** 作任何东西,所以指针很灵活、很强大,但也引入了复杂性。

扩展资料

1、指针利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于扮铅宏通过地址能找到所需的变量单元,可以说,地址指向该变量单元。

2、输出一串字符时,只需要知道它的第一个字符的地址,就可以将这个字符串输出,而第一个字符的地址,可以用指针储存。所以有n个字符串时,就可以用n个指针来储存。

3、为了保存一个数据在内存中的地址,就需要指针变量。因此指针是程序数据在内存中的地址,而指针变量是用来保存这些地址的变量。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12397137.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存