当前位置:首页 > 前端设计 > 正文

c语言数组赋初值(c语言给数组赋值的方法)

c语言数组赋初值(c语言给数组赋值的方法)

大家好,今天来为大家分享c语言数组赋初值的一些知识点,和c语言给数组赋值的方法的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可...

大家好,今天来为大家分享c语言数组赋初值的一些知识点,和c语言给数组赋值的方法的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!

如何给结构体数组赋初值

举例如下:

chara[10]

;1、定义的时候直接用字符串赋值chara[10]="hello";注意:不能先定义再给它赋值,如chara[10];a[10]="hello";这样是错误的!2、对数组中字符逐个赋值chara[10]={'h','e','l','l','o'}

;3、利用strcpychara[10];strcpy(a,"hello");易错情况:

1、chara[10];a[10]="hello";//一个字符怎么能容纳一个字符串?况且a[10]也是不存在的!

2、chara[10];a="hello";//这种情况容易出现,a虽然是指针,但是它已经指向在堆栈中分配的10个字符空间,现在这个情况a又指向数据区中的hello常量,这里的指针a出现混乱,不允许!还有:不能使用关系运算符“==”来比较两个字符串,只能用strcmp()函数来处理。C语言的运算符根本无法操作字符串。在C语言中把字符串当作数组来处理,因此,对字符串的限制方式和对数组的一样,特别是,它们都不能用C语言的运算符进行复制和比较操作。

直接尝试对字符串进行复制或比较操作会失败。

例如,假定str1和str2有如下声明:

charstr1[10],str2[10];利用=运算符来把字符串复制到字符数组中是不可能的:

str1="abc";/***WRONG***/str2=str1;/***WRONG***/C语言把这些语句解释为一个指针与另一个指针之间的(非法的)赋值运算。但是,使用=初始化字符数组是合法的:

charstr1[10]="abc";这是因为在声明中,=不是赋值运算符。

试图使用关系运算符或判等运算符来比较字符串是合法的,但不会产生预期的结果:

if(str1==str2).../***WRONG***/这条语句把str1和str2作为指针来进行比较,而不是比较两个数组的内容。

因为str1和str2有不同的地址,所以表达式str1==str2的值一定为0。

C语言中数组的默认初值问题

普通数组没有赋初值,默认的数组元素值是随机数,不是0。 如果在定义数组时,数据类型前面加上关键字static,数组变成了静态数组;或者把数组定义在函数的外面,成为全局变量数组,这时数组元素的值自动赋值为0。 例子: ?#includeintmain(void) { intm=0; staticintn; ?inta=5,b=6,c=7,d=8; intk=((m=a>b)&&(n=c>d)) printf("k=%d,m=%d,n=%d\n",k,m,n); return0; ?} 输出结果为:k=0,m=0,n=0; 当变量用static修饰,但是没有赋初始值的时候,编译器会自动给它赋值为0.但是如果不用static只是intn;这样定义的话,这个值就是未知的,因为编译器会给这个变量分配一块4字节的地址空间,这个地址里面的值就是n的值。

如何给数组赋一系列初值

给数组赋初值的方法:

1、直接初始化:intarr[3]={1,2,3};

2、遍历访问初始化:for(i=0;i

c语言中可以连续赋初始值吗

是的,C语言中可以使用连续赋值语法来为变量赋初始值。例如:

```c

inta=1,b=2,c=3;

```

这行代码将同时为变量a、b、c赋值,分别赋值为1、2、3。这种语法可以简化代码,提高可读性。但需要注意的是,连续赋值语法只适用于同一类型的变量。例如,不能将int类型的变量和char类型的变量一起使用连续赋值语法。

定义一个3行4列的整型数组并赋初值,要求编程求出数组元素中的最大值,以及所在的行号和列号

产生1000以内的随机数来初始化数组元素。

最大值初始值用a[0][0],然后依次比较a[j][i],

记录最大值的下标,存于row,col.

输出最终的a[row][col].

#include<stdio.h>

#include<time.h>

intmain(){

inta[3][4],v;

inti,j,row=0,col=0;

srand(time(0));

for(j=0;j<3;j++)for(i=0;i<4;i++)a[j][i]=rand()%1000;

printf("array:\n");

for(j=0;j<3;j++){

for(i=0;i<4;i++)printf("%d",a[j][i]);

printf("\n");

}

for(j=0;j<3;j++)for(i=0;i<4;i++){

if(a[j][i]>a[row][col]){row=j;col=i;};

}

printf("\nmaxelemisa[%d][%d]=%d\n",row,col,a[row][col]);

}

C语言关于数组赋初值的问题char buff[10]={0}

charbuff[10]={0};是可以把这个数组的所有元素的赋值成0的。不信你用下面的代码测试一下。

#include<stdio.h>voidmain(){charbuff[5]={0};inti;for(i=0;i<=4;i++){printf("%d",buff[i]);}}因为有一条规则:在数组定义的时候如果同时赋初值,未被赋值的元素都是0

关于c语言数组赋初值的内容到此结束,希望对大家有所帮助。

最新文章