精华内容
下载资源
问答
  • 2021-01-01 15:54:43

     

    #include <stdio.h>
    
    int * find_largest(int *,int );
    
    int main()
    {
    int array[] = {1,2,3,4,5,6,7,1004,5,1};
    int *ptr = find_largest(array,sizeof(array,sizeof(array[0])));
    printf("%d",*ptr);
    return 0;
    }
    
    
    int * find_largest(int *a,int n)
    {
    int *largest = a,*p;
    for( p = a; p != a+n;++p)
       {   
         if(*p > *largest)
            largest = p;
       }   
    return largest;
    }
    
    
                                                                                 
                  

    函数参数中的数组大小可以用: sizeof(array)/sizeof(array[0])  来表示

    更多相关内容
  • C语言数组(Array

    千次阅读 多人点赞 2021-08-06 16:11:49
    注意:C语言本身是不做数组下标的越界检查,编译器也不一定报错,但是编译器不报错,并不意味着程序就是正确的,所以程序员写代码时,最好自己做越界的检查。 4.冒泡排序 图解 void Sort(int* arr, int sz) { int i...

    ●🧑个人主页:你帅你先说.

    ●📃如果文章有帮助,欢迎点赞👍关注💡收藏💖

    📖既选择了远方,便只顾风雨兼程。

    🤟欢迎大家有问题随时私信我!

    ●🧐版权:本文由[你帅你先说.]原创,CSDN首发,侵权必究。

    目录

    1.一维数组的创建和初始化 

    1.1一维数组的创建

    1.2一维数组的初始化

    1.3一维数组的使用

    1.4一维数组在内存中的存储

    2.二维数组的创建和初始化

    2.1 二维数组的创建

    2.2 二维数组的初始化

    2.3 二维数组的使用

    2.4 二维数组在内存中的存储

    3.数组越界

    4.冒泡排序


    1.一维数组的创建和初始化 

    1.1一维数组的创建

    type_t   arr_name   [const_n];
    //type_t 是指数组的元素类型
    //const_n 是一个常量表达式,用来指定数组的大小

    例如

    int arr[10];
    char arr[20];

    特别注意:[ ]中必须是常量表达式!

    1.2一维数组的初始化

    int arr1[20] = {1,2,3};//不完全初始化,剩余的默认初始化为0
    int arr2[] = { 1,2,3};//数组元素个数视大括号内而定
    char arr3[] = "abc";//结尾默认补上\0,数组内容为abc\0
    char arr4[] = { 'a', 'b', 'c' };//数组内容为abc
    char arr5[] = { 'a', 98, 'c' };//数组内容为abc
    //arr5[]中,因为b所对应的ASCII码值为98,所以98在数组中以字符b存在

    1.3一维数组的使用

    #include <stdio.h>
    int main()
    {
     int arr[10] = {1};//数组的不完全初始化 第一个元素初始化为1,其余元素默认为0
        //计算数组的元素个数
        int sz = sizeof(arr)/sizeof(arr[0]);
     //对数组内容赋值,数组是使用下标来访问的,下标从0开始。所以:
     int i = 0;//做下标
     for(i=0; i<sz; i++)//
     {
     arr[i] = i;
     } 
     //输出数组的内容
     for(i=0; i<sz; ++i)
     {
     printf("%d ", arr[i]);
     }
     return 0; }

    1.4一维数组在内存中的存储

    #include <stdio.h>
    int main()
    {
     int arr[10] = {0};
     int i = 0;
     for(i=0; i<sizeof(arr)/sizeof(arr[0]); ++i)
     {
     printf("&arr[%d] = %p\n", i, &arr[i]);
     }
     return 0; }

    输出结果

    通过观察我们可以知道,随着数组下标的增长,元素的地址也在有规律的递增。
    由此可以得出结论: 数组在内存中是连续存放的。

    2.二维数组的创建和初始化

    2.1 二维数组的创建

    int arr[3][4];
    char arr[3][5];
    double arr[2][4];

    2.2 二维数组的初始化

    int arr[3][4] = {1,2,3,4};
    int arr[3][4] = {{1,2},{4,5}};
    int arr[][4] = {{2,3},{4,5}};
    char arr[3][4] = {"abc","def","qwe"};

    第二种初始化方式与第一种不同,第一种方式是每行存满后进入下一行,而第二种方式则是第一行存1、2,第二行存4、5,其余位置以0补齐。同理,第四种初始化原理和第二种相同,每个" "代表不同行,每行以'\0'为结尾。

    注意:二维数组的初始化行可以省略,列不能省略!

    2.3 二维数组的使用

    #include <stdio.h>
    int main()
    {
         int arr[3][4] = {{1,2,3},{4},{5,6}};
         int i = 0;
         for(i=0; i<3; i++)//行数
         {
             int j = 0;
             for(j=0; j<4; j++)//列数
             {
             printf("%d ", arr[i][j]);
             }
            printf("\n");
         }
         return 0;
     }
    打印结果为   1 2 3 0 
                4 0 0 0    
                5 6 0 0

     2.4 二维数组在内存中的存储

    #include <stdio.h>
    int main()
    {
         int arr[3][4];
         int i = 0;
         for(i=0; i<3; i++)
         {
             int j = 0;
             for(j=0; j<4; j++)
             {
             printf("&arr[%d][%d] = %p\n", i, j,&arr[i][j]);
             }
         }
         return 0;
    }

    输出结果

     通过结果我们可以分析到,其实二维数组在内存中也是连续存储的

    所以二维数组的存储不是这样

    而是这样的

    3.数组越界

    数组的下标是有范围限制的。
    数组的下规定是从 0 开始的,如果输入有 n 个元素,最后一个元素的下标就是 n-1
    所以数组的下标如果小于 0 ,或者大于 n-1, 就是数组越界访问了,超出了数组合法空间的访问。
    #include <stdio.h>
    int main()
    {
        int arr[10] = {1,2,3,4,5,6,7,8,9,10};
        int i = 0;
        for(i=0; i<=10; i++)
        {
            printf("%d\n", arr[i]);//当i等于10的时候,越界访问了
        }
    
         return 0;
    }

    输出结果

     超出范围后就出现了随机值。

    注意:C语言本身是不做数组下标的越界检查,编译器也不一定报错,但是编译器不报错,并不意味着程序就是正确的,所以程序员写代码时,最好自己做越界的检查。

    4.冒泡排序

    图解

    void Sort(int* arr, int sz)
    {
    	int i = 0;
    	//冒泡排序的趟数
    	for (i = 0; i < sz - 1; i++)
    	{
    		//一趟冒泡排序的过程
    		int j = 0;
    		int flag = 1;//假设已经有序
    		for (j = 0; j < sz-1-i; j++)
    		{
    			if (arr[j] > arr[j + 1])
    			{
    				//交换
    				int tmp = arr[j];
    				arr[j] = arr[j + 1];
    				arr[j + 1] = tmp;
    				flag = 0;	
    			}
    		}
    		if (flag == 1)
    		{
    			break;
    		}
    	}
    }
    #include<stdio.h>
    int main()
    {
    	int i;
    	int arr[10] = { 9,8,7,6,5,4,3,2,1,0 };
    	int sz = sizeof(arr) / sizeof(arr[0]);
    	
    	Sort(arr, sz); 
    	for (i = 0; i < 10; i++)
    	{
    		printf("%d", arr[i]);
    	}
    	return 0;
    }

    有的人会疑惑,sz为什么也要作为参数传过去,在函数内部算不就行了。实际上arr在主函数里,sizeof(arr)中arr代表的是整个数组,当你把数组传参给函数时,函数是以指针的方式接收,相当于是传了个地址过去,这样就会导致在自定义函数内部计算sizeof(arr)是4个字节(以32bit为例),再除每个元素的大小,算出来是1个元素,这就与实际不符合了。

    这里的flag是为了提升效率的,如果一组数本来就是有序的,你再进行排序就多此一举了,所以在这里增加个判断是否有序,如果有序直接跳出去,避免无用功,造成程序效率低下。

    在这里总结一下:

    数组名就是首元素的地址

    有2个例外:

    1. sizeof(数组名),这里的数组名表示整个数组,sizeof(数组名)计算的是整个数组的大小。

    2. &数组名,这里的数组名表示整个数组,取出的是数组的地址。

    我们可以进行验证

    虽然三个地址都是一样的,但意义不一样。第一个和第二个代表都是首元素的地址,而第三个表示的是整个数组的地址。

    显然,前两个+1跳过的只是4个字节,而&arr+1跳过的是整个数组,40个字节。

    5.数组与字符数组

    这道题很多人可能会选择D,为什么会这样认为呢,因为他以为第一个是" "初始化方式,所以结尾会添\0,所以长度为7,第二个则是随机值但一定比7大。请大家仔细审题,这道题题目问的是数组的长度,而你刚刚所想的确实用strlen函数算出来的长度。数组X里的内容应该是abcdefg\0,长度应为8,而数组Y里的内容为abcdefg,长度为7,所以本题为C。 

    看完这些,我相信你现在应该是这样的

    但别气馁,学习的过程总是痛苦的。

    本人水平有限,请大家批评指正!喜欢我就点个关注吧!

    展开全文
  • **c语言——数组Array**

    2020-11-04 21:51:58
    c语言——数组Array 1.一维数组 数组 概念:将一些具有类似特征的数放在同一个容器中,这个容器叫做数组 一维数组 一维数组概念:将一些具有类似特征的数放在一个容器中,这个容器叫做一维数组 抽象理解一维数组:...

    c语言——数组Array
    1.一维数组
    数组
    概念:将一些具有类似特征的数放在同一个容器中,这个容器叫做数组 一维数组
    一维数组概念:将一些具有类似特征的数放在一个容器中,这个容器叫做一维数组
    抽象理解一维数组:相当于数学中的一个起点为0,有具体长度的线段。
    一维数组的构造格式:

    数据类型  数组名[储存数据个数]
    

    eg:
    int a[10];
    int——说明定义的数组中的值为整型
    a——定义的数组名字叫做a
    [10]——a这个数组存储了10个元素,分别为a[0],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]
    注意点:
    1.“int a[max]”,声明了一个包含max个整型变量的数组,即a[0],a[1],…a[max-1],注意没有a[max],max表示的是数组中的元素个数。max必须是常数,不能是变量。
    2.比较大的数组应尽量声明在main函数外,否则程序可能无法运行。

    二维数组
    二维数组的结构格式为:

    数据类型  数据名[常量a][常量b]
    

    eg:
    int a[5][5]
    int——说明定义的数组中的值为整型
    a——定义的数组名字叫做a
    [5][5]——a这个数组存储了5×5个元素,分别为a[0][0],a[0][1],…a[4][4]
    抽象理解:可以理解为一个平面坐标系中的点的坐标点a的位置是 (2,4)——————a[2][4]
    注意点
    1.二维数组的常量a可以不用和常量b相等
    2.“int a[max][maxm]”,声明了一个包含maxn乘maxm个整型变量的数组,即a[0][0],a[1][1],…a[maxn-1][maxm-1],注意没有a[maxn][maxm],maxn乘maxm表示的是数组中的元素个数。maxn不需要和maxm相等。

    数组string(执行以下的操作要有头文件string.h)
    1.如果要从数组a复制k个元素到数组b,

    memcpy(b,a,sizeof(int) *k)
    

    2.如果数组a和b都是浮点型的,复制时要写成

    memcpy(b,a,sizeof(double)*k)
    

    3.如果需要把数组a全部复制到数组b中,

    memcpy(b,a,sizeof(a))
    

    4.如果要将数组a 的值清零

    memset(a,0,sizeof(a))
    

    为了避免输出多余的空格,设置一个标志变量first,可以表示当前要输出的变量是否为第一个。第一个变量前不应有空格,但其他变量都有。

    字符数组
    概念:数组中的元素是字符
    结构格式:

    char 数组名[数组元素个数]
    

    eg:
    char a[10]
    char——定义为字符类型
    a——数组名
    [10]——数组元素个数为10
    注意点:
    1.字符是一种特殊的整数(ASCII编码表),字符数组实际存储的是字符的ASCII码。字符常量可以用单引号法表示。
    2.scanf(“%s”,s),遇到空白字符就会停下来
    3.c语言中的字符串是以“\0”结尾的字符数组,
    4.字符串的本质是数组,可以用strlen(s)返回字符串s中结束标记之前的字符个数

    特殊的语句:
    头文件有#include<string.h>
    1.赋值语句:strcpy(a,b)
    2.比较语句:strcmp(a,b)
    3.连接语句:strcat(a,b)

    展开全文
  • 如何在C语言中先输入一个整数N...如何在C语言中先输入一个整数N表示将要输入的数字的先输入一个整数N 表示要输入的个数然后 输入N个数值。如果可以逐个处理 那么int N, i,v;scanf("%d",&N);for(i = 0; i < N...

    如何在C语言中先输入一个整数N表示将要输入的数字的以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

    c1afb02894f42e657e3200764a58ee3c.png

    如何在C语言中先输入一个整数N表示将要输入的数字的

    先输入一个整数N 表示要输入的个数

    然后 输入N个数值。

    如果可以逐个处理 那么

    int N, i,v;scanf("%d",&N);for(i = 0; i < N; i++){ scanf("%d",&v); do something with value v}

    如果要存成阵列 可以用动态阵列

    int N, i,*a;scanf("%d",&N);a=(int*)malloc(sizeof(int)*N);for(i = 0; i < N; i++){ scanf("%d",&a[i]);}do something with array afree(a);

    如何在C语言中先输入一个整数N表示将要输入的数字的个数,再输入N个数字,求这N个数字的最大、小值、平均

    void main()

    {

    int a[100],b,max,min,i,sun=0;

    float ping=0;

    printf("Please enter the number required to enter numbers");

    scanf("%d",&b);

    printf("Please enter the number");

    for(i=0;i

    {

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

    }

    max=min=a[0];

    for(i=0;i>b;i++)

    {

    if(max<=a[i])

    max=a[i];

    if(min>=a[i])

    min=a[i];

    sum=sum+a[i];

    }

    ping=sum/b;

    }

    以上就是答案啦。。数值我就没有显示出来了。你自己去做显示出来。。加分

    我也是学C的,希望以后可以多多交流

    在c语言中如何做到输入一个数字,就定义了n(为输入的数字)个数组?

    这个是没办法做到的。

    阵列定义在编译连结阶段就需要确定下来,在系统启动时需要在资料段分配指定空间。所以是不能在程式码执行过程中动态定义阵列的。

    你可以用动态申请记忆体的方法为阵列分配空间,但需要用一个统一的指标的偏移动作来实现访问不同阵列的功能。

    c语言中如何说明要让输入的整数小于某个常数例如输入一个整数N(N<100000)

    if(n

    {

    }

    但你要明确如果你希望输入的值,和要对比的值都是要变动(动态的),那么在if语句之前,就应该有确定的值(本次执行到if前,就有确定的值)

    在c语言中如何表示输入一个非0整数x

    int i; 整数i

    scanf("%d",&i); 输入到i

    if(i==0)

    printf ("Error");

    c语言问题,先输入一个整数n代表要输入的字串的个数,题目是输入入一串字元,输出他的缩写,比如输入

    在scanf("%d",&n);后面加上getchar();来读取输入的Enter键,不然会被gets (a);读取。#include #include int main(){ char a[550];int i,j,n; scanf("%d",&n); getchar(); for (j=0;j

    c语言中输入一个整数n 再随机输入n个整数 这应如何赋值

    #include

    #include

    void main()

    {

    int i,n,*array;定义一个动态阵列array储存你的n个数据

    printf("%d",&n);输入n

    array=(int *)malloc(n*sizeof(int));为动态阵列分配n个整型大小的记忆体

    for(i=0;i

    array[i]=random(1000);用随机函式random产生n个1000以内的数并储存到阵列中

    }

    for(i=0;i

    printf("%4d",array[i]);输出阵列中的元素

    }

    }

    C语言,将输入的数字存入阵列

    #include "stdafx.h"vc++6.0加上这一行.#include "stdio.h"int main(void){ int a[127],i,x; for(i=0;i<127;){ if((x=getchar())=='\n') break; if(x>='0' && x<='9'){ ungetc(x,stdin); scanf("%d",a+i++); } } for(x=0;x

    c语言如何程式设计,能够输入一个整数,得到该整数十位上的数字?

    假设输入的整数放到变数x中,则语句x/10%10即是十位上的数字,程式码如下:

    #include int main(void){ int x; printf("输入一个整数:"); scanf("%d",&x); printf("%d的十位上的数字是:%d\n",x,x/10%10); return 0;}

    分页:

    1

    23

    展开全文
  • array的区别表现什么地方 4. 讨论 5. 参考 1.开篇 很多博客和贴吧都有讨论这个话题,各有自己的表述方式,今天他们的基础上我将继续试着以我自己理解的方式总结一下,欢迎大家的审阅和指评。 2.论数组名array、...
  •  详细解释:itoa是英文integer to array(将int整型数转化为一个字符串,并将值保存数组string中)的缩写.  参数:  value: 待转化的整数。  radix: 是基数的意思,即先将value转化为radix进制的数,范围介于2-...
  • Ⅰ、简单的数组(array)的初始化: ①、//代码摘下直接可以运行 #include<stdio.h> int main() { int i,m[6]={0},sum=0;//定义来表示m[6]的所有值均为0; for(i=0;i<6;i++) //注意下标一定不能超过定义的...
  • C语言数据结构之顺序数组的实现 以下为展示顺序数组的示例: 1.用C语言实现的版本 #include<stdio> /* EOF(=^Z或F6),NULL */ ...#define MAX_ARRAY_DIM 8 //数组最大维数 typedef int ElemType; typedef int St
  • C语言指针详解

    千次阅读 2021-05-21 12:33:21
    /*** 指针简介* 可以有效地表示复杂的数据结构* 能动态分配内存* 方便地使用字符串* 有效而方便地使用数组* 调用函数时能获得一个以上的结果* 能直接处理内存单元地址*///地址与指针的概念?/**为了说清楚什么是...
  • typedef在c语言中是什么意思?

    千次阅读 2021-05-23 12:30:39
    在c语言中,typedef的意思是将一个自己命名的类型用已经有的类型来代替。C语言允许用户使用 typedef 关键字来定义自己习惯的数据类型名称,来替代系统默认的基本类型名称、数组类型名称、指针类型名称与用户自定义的...
  • C语言基础知识入门(大全)

    万次阅读 多人点赞 2021-05-11 18:34:11
    C语言一经出现就以其功能丰富、表达能力强、灵活方便、应用面广等特点迅速全世界普及和推广。C语言不但执行效率高而且可移植性好,可以用来开发应用软件、驱动、操作系统等。C语言也是其它众多高级语言的鼻祖语言...
  • 在C语言中,一维数组的定义方式为:类型说明符数组名——例: int array[10]; 含义:定义了一个数组,数组名为array,有10个元素,元素的类型均为整型。这10个元素名分别是:array[0]、array[1...
  • c语言中cos函数的用法

    2020-12-20 08:03:09
    // ---------------------------------------------------------------- // acos() - display the result of rvalue_array // ---------------------------------------------------------------- rvalue_array = ...
  • 二维数组定义的一般形式是: 类型说明符 数组名[常量表达式1][常量表达式2],其中常量表达式1表示第一维下标的长度,常量表达式2 表示第二维下标的长度。C语言是一门通用计算机编程语言c语言中二维数组哪个是行,哪个...
  • 我们知道,C语言用char数据类型表示一个8位的ANSI字符,默认代码中声明一个字符串时,C编译器会把字符串中的字符转换成由8位char数据类型构成的一个数组: 代码如下: // An 8-bit character char c = ‘A’; // ...
  • 自己去百度具体代码,看懂算法自己写代码。桶排序 (Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用...
  • C语言数组

    千次阅读 2019-08-03 19:45:50
    超女选秀的第一组有5名超女,请提供一个界面,输入每位超女的体重,最后计算出超女的的平均体重。 用我们之前学习过的... 数组(array)是用于储存的一系列类型相同的数据。数组有一个数组名,通过下标访问数组...
  • C/C++ code#includechar *country[7]={" ","U.S","U.K","FRANCE... /*国名*/int main(){int array[7][7],i,j,t,e,x,y;for(i=0;i<7;i++) /*初始化条件矩阵*/for(j=0;j<7;j++) /*行为人,列为国家,元素的值表示...
  • C语言指针用法详解

    2021-05-21 06:50:47
    表达式sizeof(array)中,数组名array代表数组本身,故这时sizeof函数测出的是整个数组的大小。 表达式*array中,array扮演的是指针,因此这个表达式的结果就是数组第0号单元的值。sizeof(*array)测出的是数组...
  • C语言动态数组

    千次阅读 2021-06-07 17:42:25
    动态数组是指声明时没有确定数组大小的数组,即忽略方括号中的下标;当要用它时,可随时用ReDim语句(C语言中用malloc语句)重新指出数组的大小。中文名C语言动态数组释义相对于静态数组而言根据随程序需要而重新...
  • c语言在数组中查找某个元素

    千次阅读 2021-05-22 14:07:02
    快速导读:Q1:C语言__数组中的查找某一元素,并显示其下标号!急!求高手!二分法.#include"stdio.h"int search(int a[],int x){int find,low,highwWW.eCAIBE‖i.com,mid;find=0;low=1;high=10;while(!find&&...
  • 数组在c语言中是什么

    2021-05-20 16:15:12
    在C语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。...
  • C语言数组大小

    2022-02-09 22:59:58
    通过sizeof()函数得到C语言数组长度
  • 十分详细的C语言实现动态数组分析
  • C语言指针表示二维数组

    千次阅读 2017-09-28 16:12:45
    #include int main() { int i,j; int (*ptr)[3]; int score[2][3]={{100...(二维数组:)//其中line,list表示矩阵的行列 int** array; array=new int*[line]; for(int i=0;i;i++) a[i]=new int[list];
  • 学习C语言的过程中,有时候会想,数据到底是以什么样的方式内存中存储的呢?经过一段时间的查阅资料,小编终于整理了一些……以VC6.0编译器为测试环境(int型为4Byte)先简介一下大小端模式,具体资料可参考这是小...
  • 错误表示 int a = 20; printf("%b\n", 10<a<15); 输出结果为1,说明不可这样表示,但是并不报错:先计算10<a,得到1,再进行1<15判断,结果正确,返回1 正确表示 int a = 12; 表示一 printf("%...
  • C语言指针

    千次阅读 2021-05-21 07:32:25
    一般把存储器中的一个字节称为一个内存单元,为了正确的访问这些内存单元,必须每个内存单元编上号,根据一个内存单元的编号即可准确的找到该内存单元;内存单元的编号也可叫为地址;即根据内存单元的编号或地址就...
  • 将char数组作为函数参数传递给C语言(passing char array as function parameters in C)我想将arr2复制到arr并将arr作为函数参数传递void func(char * array){}int main(void){int a;char arr[6][50];char arr2[][50]...
  • 【资料】c语言中常用英语

    千次阅读 2021-05-19 08:53:20
    operation运算 文件 参数 parameter 7.structure 结构 1、file 文件 静态的 static 循环语句: 2、open 打开 外部的 extern 1.circle 循环 3、close 关闭 5 数组和指针(array and 2. condition 条件 4、read 读 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 58,550
精华内容 23,420
关键字:

在c语言array表示