关于C语言指针【第一季】

简介: 关于C语言指针【第一季】

【关于指针】

& 地址运算符  *指针运算符或间接寻址运算符

1.指针的一个很重要的用途:作为实参传给函数.

2.注意下面两条语句:

    a=*p++;     a=(*p)++;

   由于*和++运算符属于同级,是右结合的。所以第一个相当于“a=*(p++);”又因为++运算符位于变量p的后面,所以是后缀运算,,所以      a=*p++;相当于a=*p;p=p+1;

  而第二条语句a=(*p)++;相当于a=*p;*p=*p+1;

3.数和数组的指针

  在函数的形参和实参中,

  如果一个数要做指针传递,

  形参 void Fuc(void *a);实参 Fuc(&a);

  而数组时void a[N];

  形参  void Fuc(void a[]);实参 Fuc(a);

4.字符指针

  以字符数组和字符指针对比

  char str[10]={"china"};   char *ptr="china";

  str代表字符串在内存中的首地址。

  ptr代表指向字符串"china"首地址的一个指针。ptr==str;

  对于字符指针赋值,必须让指针指向一个数组的首地址。

  对于字符数组的首地址,是常量不能改变,用*(str+i)方式引用,对于字符指针可以改变可以通过*(ptr+i)或者*(++ptr)方式引用

5.二维数组的指针引用

  char str[5][5], *p;

  对于二维数组中的某个值str[2][2]的引用可以直接写成cout<<*(*(str+2)+2);用二维数组名直接引用。

  也可以采用

    p=a[2];  *(p+2);方式

   或者可以

    p=*str;  *(p+2*5+2)

  **注意一点,不要误写成p=str;这样就成了第一行的首地址了,而不是第一行的第一列的值的地址。。

   **还有一种用【行数组指针】的写法

  char (*p)[5]; p=str;这样p就和数组名str一样可以用cout<<*(*(p+2)+2)方法引用了

  str[0]==*str==&str[0][0];

  【关于二维数组指针的误区】

   a[5][5];

   要吧a和a[0]区分开,虽然都是首地址,但是指向的对象不同。a[0]指的是二维数组中一维数组的首地址,对它进行寻址运算得到的是一个     数组值,即a[0]数组的第一个元素的值a[0][0].可是a是一个数组的名字它指向的是所属元素的首元素。对他寻址得到的是首元素a[0][5]      是一个一维数组。所以二者不可混淆。

    行数组指针定义成char (*p)[5];它代表的是*p有5个char型的元素分别指向(*p)[0],(*p)[1],(*p)[2],(*p)[3],(*p)[4],即指向5个char型数组

         p    ——>|str[0][0]|str[0][1]|............

         p+1——>|str[1][0]|str[1][1]|............

         p+2——>|str[3][0]|str[3][1]|............

            ..........................


相关文章
|
3月前
|
C语言
【c语言】指针就该这么学(1)
本文详细介绍了C语言中的指针概念及其基本操作。首先通过生活中的例子解释了指针的概念,即内存地址。接着,文章逐步讲解了指针变量的定义、取地址操作符`&`、解引用操作符`*`、指针变量的大小以及不同类型的指针变量的意义。此外,还介绍了`const`修饰符在指针中的应用,指针的运算(包括指针加减整数、指针相减和指针的大小比较),以及野指针的概念和如何规避野指针。最后,通过具体的代码示例帮助读者更好地理解和掌握指针的使用方法。
64 0
|
1月前
|
存储 NoSQL 编译器
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
指针是一个变量,它存储另一个变量的内存地址。换句话说,指针“指向”存储在内存中的某个数据。
86 3
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
|
1月前
|
存储 编译器 C语言
【C语言】指针大小知多少 ?一场探寻C语言深处的冒险 !
在C语言中,指针的大小(即指针变量占用的内存大小)是由计算机的体系结构(例如32位还是64位)和编译器决定的。
56 9
|
1月前
|
安全 程序员 C语言
【C语言】指针的爱恨纠葛:常量指针vs指向常量的指针
在C语言中,“常量指针”和“指向常量的指针”是两个重要的指针概念。它们在控制指针的行为和数据的可修改性方面发挥着关键作用。理解这两个概念有助于编写更安全、有效的代码。本文将深入探讨这两个概念,包括定义、语法、实际应用、复杂示例、最佳实践以及常见问题。
45 7
|
2月前
|
存储 C语言
C语言如何使用结构体和指针来操作动态分配的内存
在C语言中,通过定义结构体并使用指向该结构体的指针,可以对动态分配的内存进行操作。首先利用 `malloc` 或 `calloc` 分配内存,然后通过指针访问和修改结构体成员,最后用 `free` 释放内存,实现资源的有效管理。
161 13
|
2月前
|
存储 程序员 编译器
C 语言数组与指针的深度剖析与应用
在C语言中,数组与指针是核心概念,二者既独立又紧密相连。数组是在连续内存中存储相同类型数据的结构,而指针则存储内存地址,二者结合可在数据处理、函数传参等方面发挥巨大作用。掌握它们的特性和关系,对于优化程序性能、灵活处理数据结构至关重要。
|
2月前
|
算法 C语言
C语言中的文件操作技巧,涵盖文件的打开与关闭、读取与写入、文件指针移动及注意事项
本文深入讲解了C语言中的文件操作技巧,涵盖文件的打开与关闭、读取与写入、文件指针移动及注意事项,通过实例演示了文件操作的基本流程,帮助读者掌握这一重要技能,提升程序开发能力。
137 3
|
2月前
|
存储 C语言 开发者
C 语言指针与内存管理
C语言中的指针与内存管理是编程的核心概念。指针用于存储变量的内存地址,实现数据的间接访问和操作;内存管理涉及动态分配(如malloc、free函数)和释放内存,确保程序高效运行并避免内存泄漏。掌握这两者对于编写高质量的C语言程序至关重要。
63 11
|
2月前
|
存储 算法 程序员
C 语言指针详解 —— 内存操控的魔法棒
《C 语言指针详解》深入浅出地讲解了指针的概念、使用方法及其在内存操作中的重要作用,被誉为程序员手中的“内存操控魔法棒”。本书适合C语言初学者及希望深化理解指针机制的开发者阅读。
|
2月前
|
程序员 C语言
C语言中的指针既强大又具挑战性,它像一把钥匙,开启程序世界的隐秘之门
C语言中的指针既强大又具挑战性,它像一把钥匙,开启程序世界的隐秘之门。本文深入探讨了指针的基本概念、声明方式、动态内存分配、函数参数传递、指针运算及与数组和函数的关系,强调了正确使用指针的重要性,并鼓励读者通过实践掌握这一关键技能。
44 1