在C中,数组与指针容易混淆,看过文档之后,我把我自己关于数组与指针的理解写下来。
引用
数组与指针的主要区别在于:
1、数组在声明的时候就要分配SIZE,但指针不用;
2、数组通过下标来访问里面的元素,指针通过移动地址指向访问里面的存储元素;
3、数组一旦声明,它的SIZE是固定的,但指针是变动的;
4、指针只存储地址,它不能被赋值,而可以对数组可以赋值。
e.g.
int i = 10; int *p; p = &i; (指针p传地址)
int arr[] = {1, 2, 23}(数组arr赋初值))
引用
char * a[10]; /* 分配存储大小,它是数组,但里面存放着整形指针 */
char * b[]; /* 参数传递,它即是数组又是指针 */
void writelines(char *str[], int n) {
int i;
for (i = 0; i < n; i++) {
printf("%s\n", str[i]); //这是数组的写法,编译器把它作为数组来处理
}
for(i=0; i<n; i++) {
printf("%s\n", *str++); //这是指针的写法,如果它仅仅是数组的话,这样写明显是错误的,但在这里编译器把它作为指针来处理
}
}
void writeArray() {
char * str[] = {"aaaa1","bbbb2","cccc3","dddd4","eeee5","ffff6","gggg7"}; //这是数组
int i;
for(i=0; i<7; i++) {
printf("%s\n", str[i]); /*数组的处理方式*/
}
for(i=0; i<7; i++) {
printf("%s\n", *str++); /*指针的处理方式,但这里是数组,所以编译器报错*/
}
}
分享到:
相关推荐
本主题“C语言27:用指针数组控制P0口8位LED流水点亮”主要涉及以下知识点: 1. **C语言指针**:指针是C语言中的一个关键特性,它存储了变量在内存中的地址。通过指针,我们可以直接访问和修改该地址所对应的内存...
指针数组结合了指针和数组的特性,使我们能够灵活地处理一系列相关的数据。 首先,我们要理解指针的基本概念。指针是一个变量,它存储的是另一个变量的地址。当我们声明一个指针变量时,例如`char *str;`,我们声明...
数组的本质则是一系列的变量。 2、数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来...
### 数组与指针的区别详解 ...正确理解和区分数组与指针的概念对于编写高效、可靠的C/C++程序至关重要。通过本文的探讨,希望能帮助读者更好地掌握这两种数据结构的特点,并在实际编程中做出合适的选择。
指针与指针数组也是常见的组合,指针数组可以存储一系列的指针,这样可以方便地管理和操作一组对象。例如,`int *ptrs[10];`定义了一个可以存储10个整型指针的数组。 最后,要特别注意指针的生命周期和空指针。未...
因此,可以使用指针来遍历数组: ```c for(int i = 0; i ; i++) { printf("%d ", arr[i]); // 打印数组元素 } ``` 逆序数组的基本思想是通过两个指针,一个从数组的开头开始,另一个从结尾开始,然后交换它们所...
- 指针数组是数组中的元素是指针,如`struct UT_TEST_STRUCT *pTo[2][MAX_NUM]`定义了一个二维的指针数组。 - 这样的定义允许动态分配和管理内存,同时提供索引访问的便利性。 6. **指向指针的指针**: - 在处理...
下面的代码展示了如何使用指针遍历并打印数组: ```c int arr[5] = {1, 2, 3, 4, 5}; int *ptr = arr; // ptr指向数组的第一个元素 for (int i = 0; i ; i++) { printf("%d ", *ptr); ptr++; // 移动指针到下一...
数组指针与指针数组是C语言中两种不同的概念。数组指针指的是一个指向数组的指针,例如int (*p)[n]定义了一个指向包含n个整数的数组的指针。指针数组则是一个数组,其元素本身都是指针,例如int *array[n]定义了一个...
指针数组是一个数组,其每个元素都是一个指针。比如,`int *p[10];` 定义了一个包含10个整数指针的数组,每个元素可以指向不同的整数变量。 5. **数组指针**: 数组指针是一个指针,它可以指向一个数组。例如,`...
在C语言中,数组是一系列按顺序排列的元素,这些元素都具有相同的类型。例如,整型数组可以存储多个整数,通过索引来访问每个元素。数组定义的一般形式为`类型 名称[大小]`,例如`int arr[5]`创建了一个包含5个整数...
在C语言中,数组、指针和字符串是基础且重要的概念,它们构成了C语言的核心特性。数组是一系列相同类型变量的集合,可以是一维、二维或多维的。数组的声明通常采用`类型名 数组名[常量表达式]`的形式,例如`int a[10...
在C语言中,数组是一种非常重要的数据结构,它允许存储一系列具有相同类型的元素。...在深入学习C语言指针时,还会涉及到二级指针、指针数组、字符串指针、函数指针等各种复杂情况,这些都需要逐步学习和实践。
- 字符数组:在C语言中,字符串是由字符组成的数组,通常以空字符'\0'结束。例如,`char str[10] = "Hello";` 定义了一个包含5个字符的字符串。 - 字符串处理:C标准库提供了`<string.h>`头文件,包含了处理字符串...
标题和描述概述的知识点主要集中在三个关键概念:指针、数组和引用,以及它们之间的联系与区别。以下将深入探讨这些概念,以便更好地理解它们在编程中的应用。 ### 指针 指针是一个存储内存地址的变量,通过指针...
要提高对指针的理解,推荐阅读《C与指针》这样的经典教材,通过深入学习和实践,掌握指针的正确使用方法。理解指针和数组的差异,以及它们在内存管理和程序设计中的作用,是成为一名熟练的C程序员必不可少的步骤。...
### C高级语言程序设计:数组与指针 #### 数组的概念与使用 - **数组的定义**:数组是一种数据结构,用于存储同一种类型的多个数据元素。这些元素在内存中是连续存储的,并且可以通过索引来访问每一个元素。 - **...
这个压缩包包含了一系列关于C语言的学习资源,涵盖了C语言的基础到高级概念,是学习C语言的理想资料库。 1. **C语言程序设计**:C语言程序设计涉及如何使用C语言编写代码来解决实际问题。它包括基本语法,如变量...