A. 数组可以赋值给指针吗(求高手) 例如: int num[10],*pn; pn=num;
可以。
指针作为实体,是一个用来保存一个内存地址的计算机语言中的变量。
数组,是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。
数组名可以代表数组的首地址,num就是num数组的首地址,pn声明为一个指针变量,它的值直接指向(points to)存在电脑存储器中另一个地方的值,也就是个地址。因此num的值是可以赋值给pn的。
(1)c语言把数组的首地址给指针扩展阅读:
数组使用规则
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开始。)
网络-数组
网络-指针
B. C语言如何获得数组首地址的指针
单维数组名就是首地址,多维数组名就是第1维的首地址,因此取首地址,可以把数组名赋给对应的指针变量,或取索引为0的首个元素地址赋给对应的指针变量。举例:
单维 int arr[10]; int * p =arr; 或 int * p =&arr[0];
二维 int arr[10][10]; int (*p)[10] =arr; 或int (*p)[10] = &arr[0];// 取第一维地址
int arr[10][10]; int * p= & arr[0][0]; // 取多维中的首个元素
C. C语言,怎样把数组的首地址赋给另一个数组
不能把数组的首地址赋给另一个数组。因为数组名是常量指针类型,初始化之后是不能够被修改的。
有两种办法实现类似功能,一种是创建指针变量,把地址直接赋值指针变量:
例如
int
a[100];
int
*b=a;
第二种就是直接用循环一一复制每个元素。
例如
for(i=0;i<strlen(a);i++)
b[i]=a[i];
D. c语言问题,再c中数组名就是数组的首地址可以发送给指针变量,但是取地址数组名也可以发送,并且结果一样
&a与a是不一样的,&a是整个数组的地址,a是数组的首元素地址,&a在值上与a相等,但是代表的含义不一样的,&a+1是下一个数组的首地址,a+1是数组的第二个元素的地址
E. C语言 指针方法
#include<stdio.h>
int main()
{
int a,b,c,s[3],t;
int *x,*y,*z;//定义指针变量
x=&a;//将a的地址赋给指针x,下同
y=&b;
z=&c;
scanf("%d%d%d",x,y,z);
s[0]=*x;//将指针x所指向的变量值赋给数组s的第一个元素;依次类推
s[1]=*y;
s[2]=*z;
for(int i=0;i<3;i++)//冒泡排序
for(int j=0;j<3-i-1;j++)
if(s[j]<s[j+1])
{
t=s[j];
s[j]=s[j+1];
s[j+1]=t;
}
for(int i=0;i<3;i++)
printf("%d ",s[i]);
return 0;
}
F. C语言 把结构体数组的地址赋给指针
1、结构体指针其实是一个指针,它存储的是指向某个结构体的“地址”,所以结构体指针数组存储的其实是指向一组结构体的“地址”数组,它本身并不包含结构体的具体内容(没有被分配内存)
2、所以当用到他们时,要么重定向,比如:
d=&b; //让d指向b,d存储的是b的地址,这样就能通过d来调用b了
要么用malloc为他们分配内存:
d=(struct h *)malloc(sizeof(struct h));
这样d就指向系统为其分配的一块内存,其内容就是struct h中的东西
G. C语言怎么定义一个字符指针指向一个二维字符数组的首地址
二维数组也是“数组的数组”所以定义一个指向由m个元素组成的一维数组指针即可指向二维数组的首元素地址。
如:
char
arr[2][2]
=
{
{
'a',
'b'
},
{
'c',
'd'
}
};
char
(*p)[2];
p=arr;
//
p指向首元素地址。
char
c
=
*(p[0]+
1);//
指向0行1列
即字符b