C语言详细讲解指针数组的用法 目录1. 指针数组定义方法2. 指针的指针(二级指针)3. 字符串和指针4. 数组指针定义方法数组指针的用法 1. 指针数组定义方法 格式: 类型说明符 *数组名[ 素个数 ] int *p[10]; // 定义了一个整型指针数组p,有10个素,都是int *类型的变量 指针数组的分类: 同指针类型的分类,见上一篇 大多数情况下,指针数组都用来保存多个字符串。 #include <stdio.h> int main() { char *name[5] = {“Hello”, ”Pig”, ”Pk”, ”Welcome”, ”DJANGo”}; int i; for (i = 0; i < 5; i++) { printf(“%s ”, name[i]); } return 0; }
2. 指针的指针(二级指针) 指针的指针,即指针的地址 int main() { int a = 100; //定义一个一级指针,用于保存变量的地址 int *p = &a; //定义一个二级指针,用于保存一级指针的地址 int q = &p; printf(“a = %d %d %d ”, a, *p, q); printf(“&a = %p %p %p ”, &a, p, *q); // 打印a的地址 return 0; }
3. 字符串和指针 字符串的概念:以 ‘0’ 结尾的若干字符的集合 字符串的存储形式:数组,字符串指针,堆 (1) 定义了一个字符数组string用来存放字符串 (2) 定义了一个指针变量str,只能存放字符地址编号,所以说I LOVE C这个字符串中的字符不能存放在str指针变量中。str只是存放了字符 I 的地址编号,I LOVE C 存放在文字常量区 (3)动态申请了10个字节的存储空间,首地址给str赋值。 将字符串拷贝到str指向的内存里。 《strcpy()函数详解》 用的最多的是(1)和(3) 总结: 字符数组:在内存(栈、静态全局区)中开辟了一段空间存放字符串 字符串指针:在文字常量区开辟了一段空间存放字符串,将字符串的首地址赋给str 堆:使用malloc函数在堆区申请空间,将字符串拷贝到堆区 4. 数组指针 本身是一个指针,指向一个数组,加1跳一个数组,即指向下一个数组。 数组指针的作用就是可以保存二维数组的首地址。 定义方法 格式: 指向的数组的类型 (*指针变量名)[ 指向的数组的素个数 ] int (*p)[5]; //定义了一个数组指针变量p,p指向的是整型的有5个素的数组 p+1 往下指5个整型,跳过一个有5个整型素的数组。 #include <stdio.h> // 定义数组指针 void test1() { int a[3][5]; // 定义一个3行5列的数组 int(*p)[5]; // 定义了一个数组指针变量p,p+1跳一个有5个素的整型数组 printf(“a=%p ”, a); // 第0行的行地址 printf(“a+1=%p ”, a + 1); // 第1行的行地址,a和a+1差20个字节 p = a; printf(“p=%p ”, p); printf(“p+1=%p ”, p + 1); return; } int main() { test1(); return 0; }
数组指针的用法 #include <stdio.h> // 数组指针的用法:可以将二维数组的首地址传到另一个函数里面,此时函数的形参需要定义为数组指针 void func(int (*p)[5], int x, int y) { p[x][y] = 101; } void test2() { int i, j; int a[3][5]; func(a, 0, 1); for (i = 0; i < 3; i++) { for (j = 0; j < 5; j++) { printf(“%d “, a[i][j]); } printf(” ”); } } int main() { test2(); return 0; }
到此这篇关于C语言详细讲解指针数组的用法的文章就介绍到这了,更多相关C语言指针数组内容请搜索全栈程序员社区以前的文章或继续浏览下面的相关文章希望大家以后多多支持全栈程序员社区! 您可能感兴趣的文章:简单分析C语言中指针数组与数组指针的区别C语言 指针数组详解及示例代码C语言指针数组案例详解C语言运用函数指针数组实现计算器功能c语言的指针数组详解C语言 指针数组进阶详解C语言函数指针数组实现计算器功能c语言指针数组的具体使用
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/43785.html