C语言 指针数组的问题
发布时间:2025-05-15 06:59:31 发布人:远客网络
一、C语言 指针数组的问题
1、关注地址类型,只要类型匹配就正确,下面描述中注意括号,用来断句。
2、地址类型是 int(*)[3],含义是指向(含3个整数的一维数组)的常量指针,该指针指向的地址为3个列的一行,所以数组名本身就是行地址。
3、数组类型是 int*[3],含义是:含3个(整数指针)的数组。
4、地址类型是 int**,含义是:指向(整数指针)的常量指针。
5、取a的地址赋值给p,p是数组,数组就是常量指针,所以不可以赋值。
6、p[0]是整数指针,类型是int*,和a的地址类型不匹配。
7、&a[1][2]是a数组中一个整数元素的地址,类型int*和p[0]类型匹配。
8、&a就是a的地址,类型是int(*)[3],与p[1]的类型不匹配。
二、C语言编程问题,初学者,不太会,谢谢
1、编写一个函数,删去输入的一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。在主函数输入一个有序数组,接着调用该自定义函数,最后输出删除重复数据后的数组元素。如:输入的数组元素为:999866000-2-2打印的结果为:9860-2
2、这个程序的实现是比较简单的。因为数组中的数已按由小到大的顺序排列了。所以,只要找到与前一个数不相等的数,此数才是“有效”的。扫描完整个数组——就可以进行输出了:
3、{inti,j,n=11,a[11]={9,9,9,8,6,6,0,0,0,-2,-2};
三、c语言数组个数未知怎么处理
1、C语言在数组个数未知的情况下,根据应用情况不同,有三种方式。
2、1,数组元素总数未知,但是需要存储的内容是已知的。
3、其实这是一种变相的已知个数,只是编程者不去计算总个数,把这个工作交给系统来做。这时可以通过数组个数留空,显式初始化数组进行声明。
4、char s[]="this is a test string";
5、就是初始化了这样一个数组s,其空间个数隐式的由初始化字符串决定。
6、2,数组元素总数未知,但最大规模已知。
7、比如不知道数组的总个数,但是确定不会超过100个,那么就可以定义一个100个元素的数组,供存储调用。
8、通过malloc函数,可以动态的分配数组,然后记录下当前分配的数组元素个数,并使用该数组。当数组空间不足时,可以通过realloc函数,重新分配空间,扩大数组元素个数。
9、int*p=(int*)malloc(sizeof(int)* 100);//初始化分配100个元素空间。用size保存当前数组规模。
10、p= realloc(sizeof(int)*(size+ 100), p);//当空间不足时,增加100个元素。
11、size+=100;//需要注意的是,必须同步维护size的大小,否则会出错。