当前位置:首页 » 编程语言 » c语言字符串指针数组

c语言字符串指针数组

发布时间: 2022-11-27 13:16:59

c语言字符串数组指针的传递

简单写了一个,供参考
#include
<stdio.h>
#include
<string.h>
struct
data
{
int
n;
char
name[10];
};
//传入一个字符串指针name,给结构体相应变量赋值
void
cp_str(
char
*name
,
int
n
)
{
struct
data
st;
strcpy(
st.name
,
name
);
st.n=n;
}
//输入数据,完成字符串的录入
void
input_str()
{
int
i=0;
for(i=0;i<10;i++)
{
scanf("%s"
,name
);
cp_str(
name
,
i
);
}
}
//主程序
int
main()
{
input_str();
return
0;
}

❷ C语言:如何将字符串数组赋值给一个字符串指针或数组

直接在一个字符串里面按位赋值就可以了。像二楼说的一样。
因为你原字符串肯定是大于等于新字符串的,所以定一个变量检查原字符串的位置,定另一个变量检查新字符串的位置。那么第一个变量肯定是大于等于第二个变量的。这样可以把值从第一个变量的地方赋值到第二个变量的位置即可。

❸ c语言字符串指针

数组是指一段连续的存储空间,数组名是其开始的地方,string是指针变量,指向字符串数组,亦即是其首地址,printf("%s",string);输出的是从首地址开始往后存储空间内的东西,直至'\0'结束。

❹ c语言指针与字符数组

注意这个位置的标志。(p-2)是常量,不是变量。因为字符串在前面定义的常量。屏幕上的输出h。并且在d与h之间有一个空白,因为前面输出一个字符''。

❺ c语言中怎么定义一个字符串数组指针

c语言中定义一个字符串数组指针可以这样写:


//Exampleprogram
#include<stdio.h>

intmain()
{
charstr[]="abc";
char*p=str;
printf("%s ",str);
printf("%s ",p);
return0;
}

❻ C语言中指针定义的字符串和数组定义的字符串的区别

C语言字符数组和字符串的区别,字符数组是一个存储字符的数组,而字符串是一个用双括号括起来的以'\0'结束的字符序列,虽然字符串是存储在字符数组中的,但是一定要注意字符串的结束标志是'\0'。

总的来说是没有区别的,字符串就是以字符数组形式存储的。可以把一个字符串看成是一个字符数组,可以按数组那样操作。两者没有本质的区别,只是在不同的情况下有不同的叫法。

❼ C语言中,如何定义一个‘指针数组’,这个‘指针数组’专门用来存放‘数组指针’。

指针数组定义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)[n];

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

如要将二维数组赋给一指针,应这样赋值:

int a[3][4];

int(*p)[4];//该语句是定义一个数组指针,指向含4个元素的一维数组。

p=a;//将该二维数组的首地址赋给p,也就是a[0]或&a[0][0]

p++;//该语句执行过后,也就是p=p+1;p跨过行a[0][]指向了行a[1][]

(7)c语言字符串指针数组扩展阅读:

与数组指针关系

数组指针是指向数组首元素的地址的指针,其本质为指针(这个指针存放的是数组首地址的地址,相当于2级指针,这个指针不可移动);指针数组是数组元素为指针的数组,其本质为数组。

例如:*p[2]是指针数组,实质是一个数组,里面的两个元素都是指针,[]的优先级比*的优先级高,p先与[]结合,形成数组p[2],有两个元素的数组,再与*结合,表示此数组是指针类型的,每个数组元素相当于一个指针变量

与二维数组对比

二维数组:如char string_1[10][10]只要定义了一个二维数组,无论赋不赋值,系统都会给他分配相应空间,而且该空间一定是连续的。其每个元素表示一个字符。我们可以通过指定下标对其元素进行修改。

指针数组:如char*str_B[5]系统至少会分配5个连续的空间用来存储5个元素,表示str_B是一个5个元素的数组,每个元素是一个指向字符型数据的一个指针。

如果我做这样的定义:

char a[3][8]={"gain","much","strong"};

char*n[3]={"gain","much","strong"};

他们在内存的存储方式分别如右图所示,可见,系统给数组a分配了

3×8的空间,而给n分配的空间则取决于具体字符串的长度。

此外,系统分配给a的空间是连续的,而给n分配的空间则不一定连续。

由此可见,相比于比二维字符数组,指针数组有明显的优点:一是指针数组中每个元素所指的字符串不必限制在相同的字符长度;二是访问指针数组中的一个元素是用指针间接进行的,效率比下标方式要高。但是二维字符数组却可以通过下标很方便的修改某一元素的值,而指针数组却无法这么做。

举例编辑

数组指针:

#include&lt;stdio.h&gt;

int main()

{

char c[][4]={"哥","哥","我","岸","上","走"};//UTF-8:一个汉字=3个字节

char(*p)[4];

int i;p=c;//将指针定位于c[0]

for(i=0;i&lt;=5;i++)

{

printf("%s,",*(p+i));//或者将*(p+i)替换成*p++

}

printf(" ");

for(i=5;i&gt;=0;i--)

{

printf("%s,",*(p+i));//或者将*(p+i)替换成*--p

}

return 0;

}

指针数组:

#include&lt;stdio.h&gt;

int main()

{

int i;

char*pch[6]={"妹","妹","你","坐","船","头"};

for(i=0;i&lt;6;i++){

printf("%s,",pch&lt;i&gt;);

}

printf(" ");

for(i=5;i&gt;=0;i--){

printf("%s ",pch&lt;i&gt;);

}

return 0;

}

❽ c语言定义字符串数组

C语言字符串数组中的每一个元素均为指针,即有诸形如“ptr_array[i]”的指针。由于数组元素均为指针,因此ptr_array[i]是指第i+1个元素的指针。

例:如二维指针数组的定义为:char *ptr_array[3]={{"asdx","qwer","fdsfaf"},{"44444","555","6666"},{"a78x","q3er","f2f"}};

(8)c语言字符串指针数组扩展阅读

字符串数组数组元素表示方法:

数组元素的一般形式为:数组名[下标] 其中的下标只能为整型常量或整型表达式。如为小数时,C编译将自动取整。

例如,a[5],a[i+j],a[i++]都是合法的数组元素。数组元素通常也称为下标变量。必须先定义数组, 才能使用下标变量。在C语言中只能逐个地使用下标变量, 而不能一次引用整个数组。

❾ 请问在c语言中如何通过输入字符串为字符指针数组赋值

首先确定是字符指针数组还是字符数组指针,前者是一个数组,数组每个元素都是一个字符指针,后者是一个指向字符数组的指针。
若是指向字符数组的指针,则很简单,使用scanf("%s", str);函数获取输入的字符串,然后使用字符串拷贝函数strcpy(stc, dest);将获取的字符串拷贝到指定地址的字符指针数组中,拷贝过程中注意检查访问数组是否越界,若越界,则需要在字符数组的最后一个元素赋值为结束符'\0'。

若是赋值 字符指针数组,那么就是对数组中的某一个元素指向的字符数组进行拷贝赋值,其过程与前者相同。

❿ c语言 字符指针和字符数组的区别

首先第一点,非常重要的一点:指针和数组是不同的两个类型!


我们从可以从C语言标准文档中得知:

ISO/IEC 9899:1999 - programing language c

6.2.5 Types

20 .

说明了什么是指针类型。


在了解了两种类型的基础上,我们了解数组和指针的区别:

数组是一组相同类型对象的集合,指针是对一个对象的引用。


它们在使用中表现出了一定的相同点,但不同点也是很多的:

1,数组直接储存对象,指针则是指向一个对象。

2,数组名不能被赋值,指针变量能。

3,sizeof一个数组,得到数组的长度(字节单位),sizeof一个指针,相当于sizeof(void*)。(注意,不同目标平台指针长度可能不同,所以sizeof(void*)是最准确的回答)

4,(可能是考试内容,对于正确性就呵呵)指针是间接访问,数组是直接访问。


如果你对C语言有深入学习的想法,务必去了解一下C语言的ISO标准。

热点内容
iptables限制ip访问 发布:2025-01-17 21:38:01 浏览:173
易拉罐压缩机 发布:2025-01-17 21:25:35 浏览:923
在c语言是什么意思啊 发布:2025-01-17 21:21:02 浏览:515
re0脚本 发布:2025-01-17 21:13:34 浏览:304
甜蜜家园密码箱有什么用 发布:2025-01-17 21:07:28 浏览:47
有教少儿编程 发布:2025-01-17 20:55:37 浏览:36
直播背脚本 发布:2025-01-17 20:50:18 浏览:409
ftp移动文件的mv命令 发布:2025-01-17 20:45:53 浏览:404
电脑上啥是服务器 发布:2025-01-17 20:40:48 浏览:352
安卓手机怎么连大众车载 发布:2025-01-17 20:20:53 浏览:241