问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

数组可以赋值给指针吗?(求高手) 例如: int num[1...12

发布网友 发布时间:2024-03-07 09:01

我来回答

5个回答

热心网友 时间:2024-11-22 00:59

可以。

指针作为实体,是一个用来保存一个内存地址的计算机语言中的变量。

数组,是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。

数组名可以代表数组的首地址,num就是num数组的首地址,pn声明为一个指针变量,它的值直接指向(points to)存在电脑存储器中另一个地方的值,也就是个地址。因此num的值是可以赋值给pn的。

扩展资料:

数组使用规则

1.数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。

2.数组名的书写规则应符合标识符的书写规定。

3.数组名不能与其它变量名相同。

4、只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋1值,只能写为:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能写为:static int a[10]=1;(请注意:在C、C#语言中是这样,但并非在所有涉及数组的地方都这样,数据库是从1开始。)

参考资料:

百度百科-数组

百度百科-指针

热心网友 时间:2024-11-22 01:02

可以,num为指向数组第一个数值的指针,将其赋给同类型的指针pn,则pn也就指向数组首位置,可以通过*(pn+i)来选择输出数组内的数据!

热心网友 时间:2024-11-22 01:04

当然可以
这个指针指向的是数组首地址

热心网友 时间:2024-11-22 01:07

没有问题,数组的指针实际上就是其数组的起始地址。
其实pn=num还可以这么写:pn=&num[0]。

热心网友 时间:2024-11-22 00:59

指针与数组是C语言中很重要的两个概念,它们之间有着密切的关系,利用这种关系,可以增强处理数组的灵活性,加快运行速度,本文着重讨论指针与数组之间的联系及在编程中的应用。
  1.指针与数组的关系
  当一个指针变量被初始化成数组名时,就说该指针变量指向了数组。如:
  char str[20], *ptr;
  ptr=str;
  ptr被置为数组str的第一个元素的地址,因为数组名就是该数组的首地址,也是数组第一个元素的地址。此时可以认为指针ptr就是数组str(反之不成立),这样原来对数组的处理都可以用指针来实现。如对数组元素的访问,既可以用下标变量访问,也可以用指针访问。
  2.指向数组元素的指针
  若有如下定义:
  int a[10], *pa;
  pa=a;
  则p=&a[0]是将数组第1个元素的地址赋给了指针变量p。
  实际上,C语言中数组名就是数组的首地址,所以第一个元素的地址可以用两种方法获得:p=&a[0]或p=a。
  这两种方法在形式上相像,其区别在于:pa是指针变量,a是数组名。值得注意的是:pa是一个可以变化的指针变量,而a是一个常数。因为数组一经被说明,数组的地址也就是固定的,因此a是不能变化的,不允许使用a++、++a或语句a+=10,而pa++、++pa、pa+=10则是正确的。由此可见,此时指针与数组融为一体。
  3.指针与一维数组
  理解指针与一维数组的关系,首先要了解在编译系统中,一维数组的存储组织形式和对数组元素的访问方法。
  一维数组是一个线形表,它被存放在一片连续的内存单元中。C语言对数组的访问是通过数组名(数组的起始地址)加上相对于起始地址的相对量(由下标变量给出),得到要访问的数组元素的单元地址,然后再对计算出的单元地址的内容进行访问。通常把数据类型所占单元的字节个数称为扩大因子。
  实际上编译系统将数组元素的形式a[i]转换成*(a+i),然后才进行运算。对于一般数组元素的形式:<数组名>[<下标表达式>],编译程序将其转换成:*(<数组名>+<下标表达式>),其中下标表达式为:下标表达式*扩大因子。整个式子计算结果是一个内存地址,最后的结果为:*<地址>=<地址所对应单元的地址的内容>。由此可见,C语言对数组的处理,实际上是转换成指针地址的运算。
  数组与指针暗中结合在一起。因此,任何能由下标完成的操作,都可以用指针来实现,一个不带下标的数组名就是一个指向该数组的指针。
  4.指针与多维数组
  用指针变量可以指向一维数组,也可以指向多维数组。但在概念上和使用上,多维数组的指针比一维数组的指针要复杂一些。
  例如,在一个三维数组中,引用元素c[i][j][k]的地址计算最终将换成:*(*(*(c+i)+j)+k)。了解了多维数组的存储形式和访问多维数组元素的内部转换公式后,再看当一个指针变量指向多维数组及其元素的情况。
  1 指向数组元素的指针变量
  若有如下说明:
  int a[3][4];
  int *p;
  p=a;
  p是指向整型变量的指针;p=a使p指向整型二维数组a的首地址。
  *(*(p+1)+2)表示取a[1][2]的内容;*p表示取a[0][1]的内容,因为p是指向整型变量的指针;p++表示p的内容加1,即p中存放的地址增加一个整型量的字节数2,从而使p指向下一个整型量a[0][1]。
  2 指向由j个整数组成的一维数组的指针变量
  当指针变量p不是指向整型变量,而是指向一个包含j个元素的一维数组。如果p=a[0],则p++不是指向a[0][1],而是指向a[1]。这时p的增值以一维数组的长度为单位。
  5.指针与字符数组
  C语言中许多字符串操作都是由指向字符数组的指针及指针的运算来实现的。因为对于字符串来说,一般都是严格的顺序存取方式,使用指针可以打破这种存取方式,更为灵活地处理字符串。
  另外由于字符串以′\0′作为结束符,而′\0′的ASCII码是0,它正好是C语言的逻辑假值,所以可以直接用它作为判断字符串结束的条件,而不需要用字符串的长度来判断。C语言中类似的字符串处理函数都是用指针来完成,使程序运行速度更快、效率更高,而且更易于理解。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
宁波社保卡办理需要什么材料 宁波社保卡如何申领 有什么高性价比的隔离霜可以推荐? 防晒效果好的隔离霜有哪些值得入手? 下雨天经常爬在房子墙上的那种软体动物,不是蜗牛没壳的,可以在墙上把身... 原来是美男啊里面插曲、主题曲都有哪些? 请问下各位大虾,我在外地用外地农行卡网上转账到本地邮政卡星期六转账的... 为什么用支付宝买东西明明我余额足够,付款时却说我余额不足?2个... 萍乡烛式过滤器品牌 衡水烛式过滤器品牌推荐 c++中怎么通过指向二维数组的指针给二维数组赋值2 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 在C语言里怎么给指针数组里的某一个元素赋值?6 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 微信没满一年怎么改? 没到一年怎么申请改? 西藏自治区政协副秘书长李映州是什么级别? 修改没到一年怎么改? 急!请帮帮忙!!!数码相机存储卡在相机里可以显示照片确导不出来! 关于数组指针赋值的问题 定义一个数组指针后,数组中的元素可以给指针变量赋值吗 改错了未满一年怎么改回来 不到一年怎么改第二次 未满一年怎么强制改 不满一年如何更改? 修改没到一年怎么改? 未满一年怎么强制改 黄芪和枸杞泡水喝的用法和用量黄芪和枸杞如何泡水喝? 盆栽绿豆苗400字个日记第3 关于的盆栽日记三百300字10 C语言中关于指向数组的指针21 数组和指针的赋值4 多选题 设有定义int a[3][6],*p;则正确的指向数...2 psp 3000 RJLite怎么安装啊 胃窦部及胃体小弯侧粘膜回声增强且粗糙表面欠光滑并见 怎么给一个指针赋值?1 如何将字符指针所指内容赋值给一个字符串6 什么情况下可以给指针直接赋值?26 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 电脑机器码封禁还有解决办法吗 玩地下城与勇士的 现在进去就是机器码... 机器码一直弹出怎么办解决 C语言 这样给字符指针数组赋值行吗?2 请问在c语言中如何通过输入字符串为字符指针数组赋值?13 C语言怎样给字符数组赋值260 C语言字符指针数组赋值问题1 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... ...问题:完全引用时句末句号放在引号内,部分引用放在外面。什么叫做完全... 如何将数组赋给指针? 关于指针和指针数组的赋值11 指针数组之间的赋值问题