精华内容
下载资源
问答
  • 关于C语言数组赋值方法

    千次阅读 2021-05-22 14:11:00
    C语言数组赋值方法数组赋值的方法分为:1.赋值语句--对数组元素逐个赋值例:#include int main(){int i,a[10];for(i = 0;i <=9;i++){a[i]=i; /*赋值语句*/}for(i = 9;i >=0;i--){printf("%d",a[i]);}return 0...

    C语言数组赋值方法

    数组赋值的方法分为:

    1.赋值语句--对数组元素逐个赋值

    例:

    #include

    int main(){

    int i,a[10];

    for(i = 0;i <=9;i++){

    a[i]=i;                                /*赋值语句*/

    }

    for(i = 9;i >=0;i--){

    printf("%d",a[i]);

    }

    return 0;

    }

    2.初始化赋值

    例:

    #include

    int main(){

    int i,a[10]={0,1,2,3,4,5,6,7,8,9};               /*初始化赋值*/

    for(i=9;i >=0;i--){

    printf("%d",a[i]);

    }

    return 0;

    }

    3.动态赋值

    例:

    #include

    int main(){

    int i,max,a[10];

    printf("input 10 numbers:\n");

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

    scanf("%d",&a[i]);      /*动态赋值*/

    }

    max=a[0];

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

    if(a[i]>max){

    max=a[i];

    }

    printf("maxmum=%d\n",max);

    }

    return 0;

    }

    展开全文
  • C语言数组赋值

    2021-05-19 10:04:48
    相当于定义了s数组,具体存到内存中占用了10个连续存储单元,其实1-9分别占用一个字节,最后系统还默认添加了00000000到最后一个字节中,为了标识字符串结束。在进行strlen(s)时,该函数由s的首地址开始查找,查找到...

    这段程序应该每运行一次的结果都不完全一致。具体原因是这样:这个问题想说明白不太容易,我以下瞎说,你就瞎看吧。

    char s[] = "123456789", r[9];

    相当于定义了s数组,具体存到内存中占用了10个连续存储单元,其实1-9分别占用一个字节,最后系统还默认添加了00000000到最后一个字节中,为了标识字符串结束。

    在进行strlen(s)时,该函数由s的首地址开始查找,查找到00000000的结束符结束,返回长度为9是正确的。31 32 33 34 35 36 37 38 39 00 内存地址的实际值

    1 2 3 4 5 6 7 8 9 \0 转换为ascii后的值

    s 内存指针

    r[9]就比较随机了,该语句代码划分一段长度为9的内存空间,并将此空间的首地址给r。但由于该内存中本来就存在以下值(假设):00001100 00101010 00000000 ....,所以在进行strlen(r)时,同样是由首地址开始找,找到第三个00000000结束符后结束,返回长度为2.?? ?? 00 ?? ?? ?? ?? ?? ?? 内存地址的实际值

    ? ? \0 ? ? ? ? ? ? 转换为ascii后的值

    r 内存指针

    打??代表不知道其具体值,但前两个??的值必然不是00。

    由于内存中的值是不固定的,所以这个2必然也是随机的,这次可能为2,下次还可能为3,4,5,这个依赖于当前内存中数据的实际情况。

    长度变成18原因,也是根据当前内存情况决定的。由于在运行程序的时候恰恰这样的分配的内存:?? ?? 00 ?? ?? ?? ?? ?? ?? 31 32 33 34 35 36 37 38 39 00 内存地址的实际值

    ? ? \0 ? ? ? ? ? ? 1 2 3 4 5 6 7 8 9 \0 转换为ascii后的值

    r s 内存指针

    其中\0为字符串结束符,在内存中的值为00000000,转成16进制简写为00

    然后当执行你上面的程序后,最后变成了这样:39 38 37 36 35 34 33 32 31 31 32 33 34 35 36 37 38 39 00 内存地址的实际值

    9 8 7 6 5 4 3 3 2 1 2 3 4 5 6 7 8 9 \0 转换为ascii后的值

    r s 内存指针

    此时当我们在执行strlen(r)以及打印其值时,仍然是由r的起始位置开始,一直找到 00 结束符。这也就是你后面两个问题产生的原因。

    展开全文
  • c语言数组赋值的3种形式在C语言中,对数组进行赋值的三种形式推荐学习:C语言视频教程1、通过循环的形式 即:数组名[下标] 对数组的元素进行依次赋值#include int main(){int i;int a[10] = {0};for(i=0;i<10;i...

    122f37637c0d5b0b8375f2e1961bf399.png

    c语言给数组赋值的3种形式

    在C语言中,对数组进行赋值的三种形式

    推荐学习:C语言视频教程

    1、通过循环的形式 即:数组名[下标] 对数组的元素进行依次赋值

    #include

    int main()

    {

    int i;

    int a[10] = {0};

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

    {

    scanf("%d",&a[i]);

    }

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

    {

    printf("%d ",a[i]);

    }

    return 0;

    }

    2、通过循环的形式 数组名+下标 对数组的元素进行依次赋值

    #include

    int main()

    {

    int i;

    int a[5]; // 数组名:a 是数组首元素的地址 -----相当于一个指针 是一个常量

    //指针+整型值,表示地址的前移,前移的字节由指针指向的对象的类型决定

    //b+1; 前移4个字节(int型)

    printf("%#p\n",a); //打印输出数组a的地址 相当于a[0]的地址

    printf("%#p\n",&a[0]);

    printf("%#p\n",a+1);

    printf("%#p\n",&a[1]);

    printf("%#p\n",a+2);

    printf("%#p\n",&a[2]);

    printf("请输入数组a元素的值:");

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

    {

    scanf("%d",a+i); //赋值给数组a

    }

    printf("a数组元素的值为:");

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

    {

    printf("%d ",*(a+i));

    }

    return 0;

    }

    打印出的结果:

    2158ed77959228259bdfb6e39bb79f65.png

    3、通过循环的形式 利用指针 对数组的元素进行依次赋值

    #include

    int main()

    {

    int i;

    int d[5] = {10,20,34,89,90};

    //指针指向一维数组,指针指向数组首元素

    //数据类型 *指针名;

    int *p = d;

    //int *p = &d[0];

    //指针指向数组首元素。指针名可以当数组名使用

    printf("%#p\n",p);

    printf("%d\n",d[0]);

    printf("%d\n",*++p); //++p p的地址先偏移, *p

    printf("%d\n",d[1]);

    printf("%#p\n",p);

    printf("%#p\n",&d[1]);

    printf("请输入数组d元素的值:");

    p = d;

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

    {

    //scanf("%d",p+i); //p+0 p+1 p+2 p+3

    scanf("%d",p++); //p = p+1

    }

    //for循环结束,p偏移到元素d[4]的下一个元素

    p = &d[0];

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

    {

    //printf("%d ",*(p+i));

    //printf("%d ",*p++); //p++,后置 *p取p变化之前的内容

    printf("%d ",p[i]); //指针指向数组首元素。指针名可以当数组名使用

    }

    printf("\n-----------------\n");

    return 0;

    }

    更多C语言相关编程入门教程,请关注PHP中文网!

    展开全文
  • 很多学生在学习C语言时,在数组的地方会有点困惑。 1.数组必须指定长度,而其数组定义的长度不能是变量或者浮点数,一定是常量表达式; 2.数组赋值,有两种,一是在定义的时候就进行初始化,或者单个引用来赋值...

    很多学生在学习C语言时,在数组的地方会有点困惑。

    1.数组必须指定长度,而其数组定义的长度不能是变量或者浮点数,一定是常量表达式;

    2.数组的赋值,有两种,一是在定义的时候就进行初始化,或者单个引用来赋值。

    但有个问题:

    #include <stdio.h>
    
    int main(void)
    {
    	int a[5] = {1,2,3,4,5};
    	a[5] = 10;
    	printf("a[5] = %d\n",a[5]);
    	return 0;
    }

    结果:

    a[5] = 10
    Press any key to continue

    上述代码编译没有问题,但代码写的是错误的

    数组长度为5,元素只有a[0]-a[4],没有a[5]元素。但为什么给a[5]赋值没有报错或告警呢?另外这个值到底赋给了谁呢?

    我们可以同变量的地址来发现问题。

    代码:

    #include <stdio.h>
    
    int main(void)
    {
    	int i = 0;
    	int b[5];
    	int a[5] = {1,2,3,4,5};
    	a[5] = 10;
    	for(i=0;i<5;i++)
    	{
    		printf("数组a[%d]的地址 = %X\n",i,&a[i]);
    	}
    	for(i=0;i<5;i++)
    	{
    		printf("数组b[%d]的地址 = %X\n",i,&b[i]);
    	}
    	printf("数组a[5]的地址 = %X\n",&a[5]);
    	return 0;
    }

    结果:

    数组a[0]的地址 = 19FF04
    数组a[1]的地址 = 19FF08
    数组a[2]的地址 = 19FF0C
    数组a[3]的地址 = 19FF10
    数组a[4]的地址 = 19FF14
    数组b[0]的地址 = 19FF18
    数组b[1]的地址 = 19FF1C
    数组b[2]的地址 = 19FF20
    数组b[3]的地址 = 19FF24
    数组b[4]的地址 = 19FF28
    数组a[5]的地址 = 19FF18
    Press any key to continue

    你会发现a[5]的地址和b[0]的地址一样,所以在给a[5] = 10;时实际上是篡改了b[0]中的内容,我们可以试一下:

     代码:

    #include <stdio.h>
    
    int main(void)
    {
    	int i = 0;
    	int b[5];
    	int a[5] = {1,2,3,4,5};
    	a[5] = 10;
    	for(i=0;i<5;i++)
    	{
    		printf("数组a[%d]的地址 = %X\n",i,&a[i]);
    	}
    	for(i=0;i<5;i++)
    	{
    		printf("数组b[%d]的地址 = %X\n",i,&b[i]);
    	}
    	printf("数组a[5]的地址 = %X\n",&a[5]);
    
    	printf("数组a[5]的值 = %d\n",a[5]);
    	printf("数组b[0]的值 = %d\n",b[0]);
    	return 0;
    }

    结果为:

    数组a[0]的地址 = 19FF04
    数组a[1]的地址 = 19FF08
    数组a[2]的地址 = 19FF0C
    数组a[3]的地址 = 19FF10
    数组a[4]的地址 = 19FF14
    数组b[0]的地址 = 19FF18
    数组b[1]的地址 = 19FF1C
    数组b[2]的地址 = 19FF20
    数组b[3]的地址 = 19FF24
    数组b[4]的地址 = 19FF28
    数组a[5]的地址 = 19FF18
    数组a[5]的值 = 10
    数组b[0]的值 = 10
    Press any key to continue
    

    可以明显看出a[5]的赋值实质上修改了b[0]的值,这个对于初学者来说是大忌,在以后的开发过程中会经常出现这样的问题,这种问题属于踩内存,贼不好定位。所以大家在学习时一定要注意!!!!

    数组的长度为N,那数组元素只能有0~N-1个元素

     

     

    展开全文
  • 没有a[4]元素,但经过程序验证,发现a[4]不仅存在还可以正常赋值,这样似乎不合理,那到底是哪地方出问题了? 问了解决这一问题,我们可以看一下数组元素的地址: #include void main() { int a[4] = {1,2,3,4}; int...
  • C语言字符数组赋值

    2021-05-19 08:09:27
    C语言字符数组赋值教程C语言字符数组赋值详解语法arr[index] = value;参数参数描述arr数组名。index需要赋值的下标索引。value需要设置的值。说明给数组 arr 的索引为 index 的位置设置值为 value。循环赋值详解语法...
  • C语言怎样给字符数组赋值

    千次阅读 2021-09-11 15:43:53
    1、数组在定义时, 可以同时进行初始化,但...可通过数组下标方式或指针方式,引用数组元素,进行赋值。 例子: char a[10]; char ch=‘a’; for( i=0;i<10;i++ ) a[i]=ch+i ; //可通过数组下标引用数组元素,完成赋
  • 怎么给这个数组赋值呢?1、定义的时候直接用字符串赋值char a[10]="hello";注意:不能先定义再给它赋值,如char a[10]; a[10]="hello";这样是错误的!2、对数组中字符逐个赋值char a[10]={'h','e','l','l','o'};3、...
  • 对于历史信息,这可能很有趣:http://cm.bell-labs.com/who/dmr/chist.html... Ritchie在C中改变了这个,所以名字“是”数组,但在使用时可以衰减为指针:The rule, which survives in today’s C, is that values of ...
  • a是一个静态数组,在C语言中其在编译期间为一个常量表达式,而常量表达式可以当做是常量来使用,所以不能对于a进行指针赋值操作,既然这样是错误的,这么对于字符数组进行赋值呢 2.字符数组单个字符的赋值操作 最...
  • C语言数组如何初始化

    千次阅读 2021-02-01 01:24:55
    1.一维数组的初始化1.1 未初始化的一维数组一维数组的成员在没有初始化时,数组成员的值都是未知的,一旦访问到未知的值,可能导致不可预料的情况,严重时可以导致软件运行异常。下面,将没有初始化的数组对应的值打印1. ...
  • c语言中如何给字符串数组赋值1.问题这是我写的struct student{int x;char name[10];};void main(){student st;st.name= 这里能不能直接赋值 一个字符串 “123”;? 如果不用scranf()}2.原因st.name="123"; 非法,...
  • 数组给指针赋值的特殊性 变量名的地址赋值给指针时,必须加取地址符& int*p; int a=1; p=&a;//正确 p=a;//错误 数组名的地址赋值给指针时,给的是首元素地址,和传递参数是一样 int arr[10]; int *p; ...
  • 一维数组的定义方式如下:类型说明符 数组名[常量表达式];例如:int a[5];它表示定义了一个整型数组数组名为 a,定义的数组称为数组 a。此时数组 a 中有 5 个元素,每个元素都是 int 型变量,而且它们在内存中的...
  • c数组赋值分为赋初值和赋值两种。赋初值又称为初始化,是在编译时...C语言规定:只有静态存储类(static)和外部存储类(extern)的数组才能被赋初值。赋初值的方法是使用一种称为初始值表的方法。该方法是在定义或说...
  • C语言结构体数组定义及赋值

    千次阅读 2021-08-03 17:10:17
    做了一个小的例子: #include int main() { struct Link { int LinkId; int LinkLen; int NxtLnkId; }Lnk[3]; Lnk[0].LinkId = 1;... printf("结构体数组赋值完成。"); } 结构体数组的赋值情况:
  • C语言数组详解

    千次阅读 2021-05-22 01:17:48
    C语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。本...
  • C语言先开辟一个二位数组的内存,再通过指针的传递用子函数为其赋值 static float pRefImg[5][5];////从旋转后的图像中挖取匹配的基准图 static float(*temp_pRefImg)[5] = pRefImg; int main() { re(temp_pRefImg...
  • C语言数组是什么

    2021-05-18 13:44:31
    C语言数组是什么C语言数组是什么呢?大家是否清楚呢?下面是小编分享的C语言数组的概念,欢迎大家参考!例子:输出一个 4×4 的整数矩阵,代码如下:#include #include int main(){ int a1=20, a2=345, a3=700, a4=22; ...
  • c语言中,数组赋值

    2021-11-03 21:42:01
    c语言中,a[5]会在内存中申请5块内存,可以存入数字,还可以赋值! 如a[2] = 3;//会将数组中第三个数值变成3! #include <stdio.h> #include <stdlib.h> int main() { int a[5] = {7,2,5,3,6}; ...
  • C语言:字符数组赋值

    2021-03-07 17:31:00
    1、定义的时候直接用字符串赋值 char a[10]=“hello”; //sizeof(a)为10 或char a[]=“hello”; //sizeof(a)为6 注意:不能先定义再给它赋值,如char a[10]; a[10]=“hello”;这样是错误的! 2、对数组中字符逐个...
  • 一、数组定义原则:长度是常量,赋值用大括号括起来。例:int data[5] = {5, 2, 4, 0, 3};如果用变量:int n=5;int a[n] = { 1,2,3,4,5 };gcc报错:error: variable-sized object may not be initialized先追加一个...
  • 背景:下述函数的作用,是将字符数组倒叙转化为整型数组,但是运行过程中,*b这种形式,就能正常赋值,输出;b[test_count]这种形式就不能正常赋值,输出编译工具:Visual studio 2019code:void Invert(char* a, ...
  • C语言数组考点归纳

    2021-05-22 16:45:30
    下面是小编为大家收集的C语言数组考点归纳,欢迎借鉴学习!9.1 一维数组的定义、初始化和引用1.一维数组的定义方式为:类型说明符 数组名[常量表达式]***1***数组名的命名方法与变量名相同,遵循标识符命名规则;***2*...
  • C语言数组概念

    2020-12-21 19:17:22
    目录:前言一、数组的概念和定义二、使用步骤1.访问数组2.程序运行总结 前言 C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同...
  • puts("输入二维数组各项"); for(g=0;g { gets(x[g]); } y=(char *)malloc(sizeof(char)*m*n+1); fun(x,y,m,n); for(g=0;g { for(f=0;f putchar(x[g][f]); putchar('\n'); } putchar('\n'); puts(y); putchar('\n');...
  • 例子:先用循环结构给数组元素a[0]~a[9]赋值0到9,然后再按照9-0输出 #include <stdio.h> int main() { int i, a[10]; #定义整型变量i和整型数组a for (i = 0; i <= 9; i ++) #先后对1
  • 说到C语言结构体数组的同时赋值,许多人一想就会想到用以下的这种方法,咱们来写一个例子:#include struct student{int a;int b ;int c ;};struct student array1[1000] ;int main(void){int i ;for(i = 0 ; i < ...
  • 谨记每个人心中都有一片海,...今天这篇文章将为读者介绍C语言中一个非常重要的知识点————数组,相信的知识已经不能满足我们实际开发的需要,所以,为了开发更快捷、更方便,那么今天开始我们就走进C语言的重点...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 138,385
精华内容 55,354
关键字:

c语言数组赋值

c语言 订阅