Excel表格网

指向整型数组的指针如何用?

96 2024-02-27 16:04 admin   手机版

一、指向整型数组的指针如何用?

数组指针(也称行指针)

定义 int (*p)[10];

()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是10,也可以说是p的步长。也就是说执行p+1时,p要跨过10个整型数据的长度。

例:int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。所以数组指针也称指向一维数组的指针,亦称行指针。

指针数组

定义 int *p[n];[]优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组,它有n个指针类型的数组元素。这里执行p+1时,则p指向下一个数组元素,这样赋值是错误的:p=a;因为p是个不可知的表示,只存在p[0]、p[1]、p[2]...p[n-1],而且它们分别是指针变量可以用来存放变量地址。但可以这样 *p=a; 这里*p表示指针数组第一个元素的值,a的首地址的值。如要将二维数组赋给一指针数组:int *p[3];int a[3][4];p++; //该语句表示p数组指向下一个数组元素。注:此数组每一个元素都是一个指针for(i=0;i<3;i++)p[i]=a[i]这里int *p[3] 表示一个一维数组内存放着三个指针变量,分别是p[0]、p[1]、p[2]所以要分别赋值。

这样两者的区别就豁然开朗了,数组指针只是一个指针变量,似乎是C语言里专门用来指向二维数组的,它占有内存中一个指针的存储空间。指针数组是多个指针变量,以数组形式存在内存当中,占有多个指针的存储空间。

C语言30天核心突破

二、二维数组如何用指针表示?

二维数组可以看成是指针的指针,b[][] = **b;比如b[2][5];它是一个2行5列的二维数组,也可以看成是二级指针,一级存放的是行指针,然后每个行指针里面其实又是指向了5个列元素。*(*(b+i)+j),*(b+i)是先取行指针,然后+j偏移到所要的列,然后*取值就得到i行j列的数据了。

三、scanf能直接输入数组或指针吗?

当然是不能的。scanf函数拷贝的是值,而不是地址,他把你输入的值放到你指定的地址上去,那这样的话岂不是混乱了。

如果是拷贝地址,直接把地址给P,也不会错。但是拷贝字符串,把这些字符直接赋值给一个没有初始化的指针P,当然会错。如果拷贝的是值,那么在scanf之后原对象的地址就变了。

四、plc输入点如何用数组表示?

以三维数组为例,定义,赋值,和遍历操作如下:

1 定义:

int a[10][10][10];

这样就定义了一个10*10*10的三维数组。

2 赋值:

访问三维数组一个元素可以写作a[m][n][p]。于是将三维数组每个值分别输入的代码如下:

int i,j,k;

for(i = 0; i < 10; i ++)

for(j = 0; j < 10; j ++)

for(k = 0; k < 10; k ++)

cin>>a[i][j][k];

3遍历:

事实上,2中所介绍的赋值,实际上已经对数组元素做了一次遍历。

五、字符数组中的字符串怎么整体输入?

在C语言中,字符数组中的字符串可以整体输入输出。可以使用scanf()函数和printf()函数来实现这一点。例如,通过以下方式,将从标准输入中读取一个字符串,并将其存储到字符数组str中,然后使用printf()函数将该字符串输出到标准输出。

另外,你也可以使用gets()函数和puts()函数进行字符串的输入和输出。此外,另一种做法是利用指向字符串的指针和中间变量来实现。

需要注意的是,以上方法主要针对的是单个字符元素进行输入输出,而不是直接对整个字符数组进行输入输出。每一个字符元素对应一个字节,多个字符元素组合在一起形成一个字符串。因此,尽管我们可以对字符数组进行整体的输入输出操作,但这并不能等同于对字符串变量的赋值。

六、为什么字符串指针的数组输出时不用加*?

因为字符数组中每一个元素都相当于一个指针变量,就不需要在加※了

七、怎么把输入的字符串储存到数组里?

char[]ss=newchar[20];chara='*';如果是一个字符,可以直接存放在数组ss[0]=a;如果是很多,数组的赋值需要通过for循环for(i=0;i<ss.length;i++){ss[i]=要存的字符}

八、c语言怎样输入字符串后转换为数组?

在C语言中,字符串是以字符数组方式保存的,于是字符串数组可以用二维字符数组存储。

输入时,每次输入字符串数组的一个元素(一行),根据需要,使用scanf或gets进行输入。

如:

charstr[10][100];//定义字符串数组,供10行,每行最多100个字节数据。

inti;

for(i=0;i<10;i++)

scanf("%s",str[i]);//输入10行字符串数据。

九、怎么将输入的字符串依字符存入数组?

字符串存储在数组中一般有如下几种方法:

1、声明数组时赋值,如:char str[]="abcd";

2、运行时由键盘输入,如:scanf("%s",str);要确定输入的字符串长度不大于数组长度减一;

3、在程序代码中把另一个字符串赋值给一个数组用函数strcpy,如:strcpy(str,"abcd");或者strcpy(str,str2);str2为一个存有字符串的数组,或者指向字符串的指针。这个药保证str要能放得下字符串。

十、C语言如何用指针输出字符串中间的字符?

使用指针输出字符串有以下几种方式:

1、使用printf 函数进行输出,其使用的格式转换符为%s,如

char *str = "test";//指针指向一个字符串

printf ("%s\n", str);//输出str指向的字符串

2、使用puts函数进行输出,如

char *str = "test";

puts(str);//输出str指向的字符串,会自动多输出一个换行

3、使用自定义函数进行输出,如

void myPuts(char *str)//自定义输出函数

{

if (!str)return ;

while (*str != '\0'){

putchar(*str);

str++;

}

}

char *str = "test";

myPuts(str);

扩展资料:

C++指针与字符串

1、C语言里没有字符串数据类型,要想获得字符串的表示形式利用字符数组

#include<iostream>

using namespace std;

#include<stdlib.h>

void main()

{

char ar[]={'a','b','c','d'};

cout<<ar; //字符串后无结束符\0,会有多余打印

cout<<endl;

char br[]={'a','b','c','d','\0'};

cout<<br;

cout<<endl;

char cr[5]="abcd"; //字符串结尾默认隐藏了\0

cout<<cr;

system("PAUSE");

}

2、C语言里没有字符串数据类型,要想获得字符串的表示形式利用字符指针

#include<iostream>

using namespace std;

#include<stdlib.h>

void main()

{

char *p="hello world";

cout<<p;

//整形的指针,打印指针时只能打印其内部地址

//字符指针,打印指针时也是地址,但是这个被看作字符指针后,会打印该指针指向地址内存放的字符串,打印直到遇到\0为止

system("PAUSE");

}

3、静态常量区的字符串存储及指针访问

#include<iostream>

using namespace std;

#include<stdlib.h>

#include<string.h>

void main()

{

char *p="hello world"; //hello world存放在内存的静态常量区

//指针变量p存储的是该静态常量区的首个字符地址

//不能通过指针修改静态常量区的字符,但是可以通过指针访问

int length=strlen(p);

//strlen计算的是字符串p的有效长度,不算\0

for(int i=0;i<length;++i)

{

cout<<p[i];

}

system("PAUSE");

}

顶一下
(0)
0%
踩一下
(0)
0%
相关评论
我要评论
用户名: 验证码:点击我更换图片