定义数组指针(数组指针定义)

本文目录
- 数组指针定义
- 怎么定义指向一个数组指针的指针比如:我要指向于 int *A[] = {“A“,“B“};
- 指针数组都是怎么定义的呢
- c语言中怎么定义一个字符串数组指针
- 数组指针定义方式
- 数组指针,字符串指针的几种定义方法
- 怎样定义一个指向一维数组的指针
数组指针定义
首先,应该明白:int *p=a;相当于int *p;p=a;
a也是地址,是数组的首地址,不过a是个常量,是不能变的!!
p是指针,保存的是地址;*p是指定地址所在单元的值,在这里就是数组元素。
p 变化了,就是指向了不同的元素,*p变了,所指的元素没有变,是元素的值变了。
怎么定义指向一个数组指针的指针比如:我要指向于 int *A[] = {“A“,“B“};
指针数组是一种特殊的数组,指针数组的数组元素都是指针变量。指针数组的定义格式为:
类型名称 *数组名称[数组长度];
例如:float *pf;
因为下标运算符的优先级高于指针运算符*,上述定义等价于:float * (pf);
说明pf是一个含有3个元素的数组,数组元素为指向float型变量的指针变量。
又如:
int *pn; /*定义一个5个元素的指针数组,数组元素为指向int型变量的指针变量*/
char *pc; /*定义一个10个元素的指针数组,元素为指向char型变量的指针变量*/
不论指针数组是什么类型,指针数组的每个数组元素都用来保存一个地址值,在TurboC下,每个数组元素是一个unsigned int型变量,占用2个字节。
指针数组定义后,可以使数组元素指向一个变量和其他数组的首地址。下面是一个指针数组定义和引用的例子。
main()
{
int i;
char c1=“How“;
char c2=“are“;
char *c3=“you“;
char *pArray;
pArray=c1;
pArray=c2;
pArray=c3;
for(i=0;i《3;i++)
printf(“%s “, pArray[i]);
}
程序运行的结果为:
How are you
说明:
(1)程序中c1,c2被定义为字符数组并初始化;c3是一个指针变量,指向字符串所在字符数组的首地址。
(2)语句char *pArray;定义了三个元素的指针数组pArray,数组元素是指向char型变量或数组的指针变量。
(3)语句pArray=c1;将字符数组c1的首地址赋给pArray,指针变量pArray指向了c1的首地址。
(4)for循环中,语句printf(“%s “, pArray[i]);依次打印了三个字符数组的内容。比如,pArray里存放了c1的首地址,printf(“%s “, pArray)和printf(“%s “, c1)的作用是相同的。
字符数组c1,c2,c3和指针数组pArray的内存情况如下图(图中的数组首地址值是假设的值)。
指针数组pArray占用了从FFC0开始的6个字节。char型变量占用1个字节,因此字符数组c1,c2,c3均占用4个字节(包括字符串结束符’\0’)。pArray里存放了字符数组c1的首地址FF10,使pArray指向c1。pArray里存放了字符数组c2的首地址FF50,使pArray指向c2。pArray里存放了字符数组c3的首地址FF70,使pArray指向c3。
指针数组都是怎么定义的呢
数组指针是指向数组首元素的地址的指针,其本质为指针(这个指针存放的是数组首地址的地址,相当于2级指针,这个指针不可移动); 指针数组是数组元素为指针的数组,其本质为数组。
数组指针:
int a={1,2,3,4,5,6,7,8,9,10,11,12};
int (*p);
p=a;
for(int i=0;i《3;i++)
{
for(int j=0;j《4;j++)
{
printf(“%d“,p[i][j]); //或者 *(*(p+i)+j) 或者 *(p[i]+j)
}
printf(“\n“);
}
指针数组:
int a={1,2,3,4,5,6,7,8,9,10,11,12};
int *p;
for(int ix=0;ix《3;ix++)
p[ix]=a[ix];
for(int i=0;i《3;i++)
{
for(int j=0;j《4;j++)
{
printf(“%d“,p[i][j]); //或者 *(*(p+i)+j) 或者 *(p[i]+j)
}
printf(“\n“);
}
c语言中怎么定义一个字符串数组指针
c语言中定义一个字符串数组指针可以这样写:
#include 《stdio.h》
int main()
{
char str = “abc“;
char *p = str;
printf(“%s\n“, str);
printf(“%s\n“, p);
return 0;
}
数组指针定义方式
1、p被定义成一个数组指针,它可以指向一个含有10个char元素的一维数组,具体的说是指向“一行”;
2、q被定义成一个字符指针,它可以指向一个char型的存储单元,因此q=a完全没问题,因为a就是&a,它表示char型存储单元的a的地址;
3、p+1指向了a ,也就是刚才数组a的“下一个元素个数为10的数组”,要想通过p访问a,可以通过下面的方式
p = &a;然后就可以按照下面的方式进行了。
*(*p+i),这样就访问到了 a[i]。例如下面的程序
#include《stdio.h》
void main()
{
char a;
char (*p);
int i;
gets(a);
p=&a
for(i=0;i《10;i++)
printf(“%c “,*(*p+i));
}
数组指针,字符串指针的几种定义方法
一:数组指针的定义方法
1.
int a = {1,2,3,4,5,6,7,8,9,0};
int * p;
p = &a; // 等价于p = a;
1
2
3
2.
int a = {1,2,3,4,5,6,7,8,9,0};
int * p = a; //定义指针时直接赋值;
1
2
3
二:输入字符串的方法
1.直接把字符串输入到字符数组
char str = “I love China!“;
printf (“%s \n“,str);
puts (str);
1
2
3
2.定义一个指向字符型指针
char * str = “I love China!“;
puts (str)
/*
等价于:
char * str;
str = “I love China!“;
*/
3 . 通过gets函数
char str;
gets (str);
puts (str);
4.指针指向数组首元素地址,然后将字符串首地址赋给指针
char *a, str;
a = str;
scanf(“%s“,a);
不能用以下错误方法定义
错误1.
char str;
str = “I love China!“; //数组名是地址,是常量,不能被赋值;
错误2.
char str;
str = “I love China!“; //错误!企图把字符串赋给数组中各个元素。
怎样定义一个指向一维数组的指针
定义一个指向一维数组元素类型的指针,并且赋值成指向一维数组首元素即可
比如:int a,*p; p=a;//或者p=&a; 这样就可以用p访问a,p访问a
//在p不变的情况下 *p就是a的内容,*(p+2)就是a的内容

更多文章:
金山铁路22号线(请问现在轨道交通22号线金山铁路是个什么情况据说9月28日就开通了啊~~~)
2026年10月11日 09:10
repercussions(都是余波,repercussions和aftermath有什么区别啊)
2026年10月11日 09:00
dropdownlist 绑定(DropDownList 绑定所有项 并 显示指定项)
2026年10月11日 08:50
易语言网页api接口怎么调用(易语言,怎么读取网页json的api)
2026年10月11日 08:00
majority of(the majority of 和 a majority of的区别以及用法例句)
2026年10月11日 07:40







