C语言指针并不难

本文深入探讨了C语言中指针的核心应用,通过三个具体问题,逐步剖析了指针的使用技巧,包括负号下指针的运算、指针与不同类型变量的交互,以及指针在数组和字符串中的高级操作。旨在帮助读者提升对C语言指针的掌握,深入理解其在程序设计中的灵活运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    C语言的核心在于指针,这2个指针题目,如果你不用编译就能得出正确的答案,那你一定是C的高手,不择不扣的高手—指针并不难得意 

 

第一题:求p[-1]、p[-5]的值(此题重点在于负号,很简单,考察对指针了解的广度方面)
#include <stdio.h>

int main(void)

      char* p = NULL;
      char* tmp = "12345678";

      p = (char* )(tmp+4);
      //p[-1] = ?,   p[-5] = ?。     

   

      return 0;

}

 

 

第二题:求p[0]--p[5]的值(这个才有点点挑战)
#include <stdio.h>

int main(void)

      char* data = "12345678";
      short* tmp = NULL; 
      char p[6] = {0};
 
      tmp = (short *)&p[2];
      *tmp = atoi(&data[4]); 

      //p[0] = ?,   p[1] = ?,  p[2] = ?,    p[3] = ?,    p[4] = ?,  p[5] = ?。      
    
      return 0;

}

 

如果你觉得意犹未尽,那就再来一个吧:

     int* p = (int* )0x1234;

     printf("p = %p, *p = %d\n", p, *p);

这个题的答案你总该知道吧。。。。。。偷笑

再如果你的确对指针感兴趣,可看文章<一个简单的结构体与指针题目>:http://blog.youkuaiyun.com/huangminqiang201209/article/details/8287498

 

      一己之见,见笑了。。。。。

 

### 回答1: C 语言中的指针可以说是一个比较难理解的概念,因为它涉及到了计算机内存的操作。如果你不熟悉内存的工作原理,指针的概念可能会比较抽象和难以理解。 此外,指针的概念需要对数据类型、地址、内存分配等方面有一定的了解,而这些知识对于初学者来说可能是比较困难的。 同时,指针的错误使用也很容易导致程序崩溃,因此需要十分小心。 总的来说,C 语言中的指针是一个需要深入理解和练习的概念,但是它是 C 语言编程中很重要的一部分,且对于提高编程能力有很大的帮助。 ### 回答2: C语言指针之所以被认为难学,是因为它相对于其他编程语言来说更加底层且概念较为抽象。以下是几个可能的原因: 1. 指针与内存管理:C语言中,指针与内存密切相关。指针可以直接访问内存地址,但也需要手动进行内存的分配和释放,否则可能会导致内存泄漏或者悬空指针等问题。 2. 指针算术:C语言允许对指针进行算术操作,如指针加减、指针递增、递减等。这要求学习者掌握指针内存地址之间的关系,且需谨慎处理指针算术,以确保不发生内存越界等错误。 3. 多级指针:C语言支持多级指针,允许指针指向指针。这增加了学习的难度,尤其是对于初学者来说,理解多级指针的概念和应用可能会比较困难。 4. 字符串处理:在C语言中,字符串是以字符数组的形式存储和处理的。使用指针可以更有效地操作字符串,然而对于初学者来说,指针与字符串的关系可能需要花费更多的时间去理解和掌握。 虽然C语言指针难度较高,但掌握好指针的概念和使用方法对于理解底层编程、内存管理以及某些高级语言的底层原理都具有重要意义。通过坚持学习、阅读指针相关的资料和教程,进行实践,可以逐渐掌握好C语言指针。 ### 回答3: C语言中的指针是许多初学者感到困惑的一个概念,因为它与其他高级语言的概念不同且较为抽象。以下是指针难以学习的几个原因: 第一,指针是一种直接访问内存地址的方式。这意味着我们需要理解计算机内存的工作原理,学会如何在程序中正确地使用这些内存地址。这对于没有计算机底层知识的人来说可能会很复杂。 第二,指针有许多复杂的语法规则。例如,我们需要使用星号(*)来声明指针变量,使用地址运算符(&)来获取变量的地址。此外,我们还需要理解指针的类型匹配规则以及指针算术运算的规则。这些规则对于初学者来说可能会很令人困惑。 第三,指针容易出现错误。由于指针直接访问内存地址,因此在使用指针时出现错误可能导致程序崩溃或产生未定义的行为。例如,当指针没有正确初始化或者指针指向的内存已被释放时,我们可能会遇到段错误或野指针等问题。 第四,指针的概念相对抽象。指针是一种间接引用的方式,通过指针我们可以访问其他变量的值或者修改其他变量的值。这种间接性可能会增加学习的难度,尤其是对于没有编程经验的人来说。 总之,C语言指针之所以难以学习,是因为它需要理解底层的内存访问机制、掌握复杂的语法规则、注意错误的出现以及理解抽象的概念。然而,一旦掌握了指针的概念和用法,它可以成为编写高效、灵活的程序的重要工具。因此,努力学习和理解指针是编程学习的关键。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值