当前位置:首页 » 编程语言 » c语言定义指针数组

c语言定义指针数组

发布时间: 2025-09-30 08:58:51

1. c语言选择题,关于指针数组。求详解

int a[2][3]; 定义了一个二维函数,每一维数组有三个元素。
int (*pt)[3]; 定义了一个数组指针,也就是定义了一个指向有三个元素的指针,即该指针,每次自加1,地址跳过三个int
pt=a; 就是让pt指向a[0],注意a[0]是一个数组地址,里面有三个元素
对于A选项,pt[0][0]是正确的,pt[0][0]等价于a[0][0]
对于B选项,不正确,因为pt+1就是a[1], *(pt+1)[2]相当于a[3][0]不对。
因为运算符优先级,[]大于*,因此*(pt+1)[2]就是*pt[1+2] 也就是*a[1+2]。而*a[3]就等价于a[3][0]。越界了
改成(*(pt+1))[2]就对了,相当于a[1][2]
对于C选项,正确,*(pt[1]+2) 相当于a[1][2]
对于D选项,正确,*(a[0]+2)相当于a[0][2]

2. c语言什么时候使用数组,什么时候使用指针

任何时候都可以使用数组,使用指针。

定义时,通常只有字符指针,和字符数组指针直接定义。用来表示字符串或字符串数组。
其他一般定义数组。操作时用指针或数组。

其他指针,多半用在参数传递,数据结构内部(不确定需要内存的大小,或者链表,二叉树等链式结构)的时候。
还有一种是有些函数参数就是指针,这时定义一个指针,来操作传进来的指针参数比较好。

指针作为参数,有一下几种用法,

1)当作数组用,用来获取或设置数组元素。
2)把一个比较长的数据结构传入函数,只需要一个指针就够了。
3)传入变量的地址,用来读取或修改变量的值,主要是为了修改用。

直接定义一个不指向任何对象的指针,并且也从不给他赋值,没什么意义;

指针要么指向数组,要么指向变量,要么动态申请内存。
NULL指针,只是一个方便的指针,表示不指向任何对象。

真正有用的还是指向具体对象的指针。
如果定义了一个指针,使用时要让他指向一个具体对象,当需要他不指向什么对象的时候,给他赋值为NULL;
PS:
C语言,数组名只是一个指针常量而已,离开定义可见处,数组大小的信息就不存在了。
只有定义完全可见的地方,才可以获得数组的大小。
数组作为函数的参数,和外部引用声明都不能获得数组的大小。
参数只能传递指针,参数的大小只是指针的大小;
只能看到声明的地方,获取数组大小的努力,只能换来错误。

void fun1(int a[10]) //<==> void fun1(int a[]) <==>void fun1(int *a)
{
}
void fun2(int [10][10])// <==>void fun2(int a[][10])<==> void fun2(int (*a)[10])
{
}

3. C语言,指针 与 数组。

比如
p指向的是数组第一个元素的地址 所以*p就是取p指向的这个地址的值.
B错在str是指向字符串的指针
比如
printf("%s\n",str);会输出整个Program
由此可以说明BCD都是错的
字符串的表现形式
在C程序中,可以用两种方法实现一个字符串。
1. 用字符数组实现。
[例8.11]
void main(void)
{static char string [ ]="I Love China!";
printf("%s\n",string);
}
运行时输出: I Love China!
和前面介绍的数组属性一样,string是数组名,它代表字符数组的首地址,(见图8.17)。string[4]代表数组中序号为4的元素(v),实际上string[4]就是*(string+4),string+4是指向字符“v”指针。
2. 用字符指针实现。
可以不定义字符数组,而定义一个字符指针。用字符指针指向字符串中的字符。
[例8.12]
void main(void)
{char *string="I Love China!";
printf("%s\n",string);
}
在这里没有定义字符数组,但C语言对字符串常量是按字符数组处理的,实际上在内存开辟了一个字符数组用来存放字符串数组。在程序中定义了一个字符指针变量string。并把字符串首地址(即存放字符串的字符数组的首地址)赋给它(见图8.18)。有人认为string是一个字符串变量,以为定义时把"I Love China!"赋给该字符串变量,这是不确切的。

热点内容
如何配置亚硫酸钠 发布:2025-09-30 10:14:19 浏览:27
初一孩子怎样学编程 发布:2025-09-30 10:05:54 浏览:662
linuxlinuxlvm 发布:2025-09-30 10:01:52 浏览:255
ant编译war 发布:2025-09-30 10:00:08 浏览:628
视频剪切适合什么配置 发布:2025-09-30 09:47:16 浏览:411
linux下载iso 发布:2025-09-30 09:39:42 浏览:57
时产800吨碎石生产线如何配置 发布:2025-09-30 09:29:11 浏览:814
sql脚本和存储过程区别 发布:2025-09-30 09:15:35 浏览:243
pokemongo脚本 发布:2025-09-30 09:05:08 浏览:89
c语言定义指针数组 发布:2025-09-30 08:58:51 浏览:820