首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C语言数组指针

对于数组元素的使用,采用的是数组名加下标的方式。 比如有数组 int a[10]; 里面10个元素分别是 a[0]、a[1]、a[2]......a[9]。...通常对于数组,我们使用循环处理,例如有变量 int i; 在循环里面 i 的值从 0-9变化,那么a[i] 就依次对应数组第一个元素 a[0]到最后一个元素a[9]。...引用数组元素,还有另外两种方式。 首先,我们要知道数组名a代表的含义,它表示的是首地址,数组第一个元素a[0]的地址。...数组在内存空间位置是固定的,地址不变,这也就是为什么不能给数组名a赋值或者改变它的值。 那么a+1是什么意思呢?很多人误以为,那就是首地址加一呗。a+1表示的是数组里面第二个元素的地址。...定义指针 int *p; 使用p=a;或者p=&a[0]让指针指向数组第一个元素a[0],那么通过指针p的移动,如p++等也可以遍历数组所有元素。

1.6K10

C语言总结_数组函数传参练习题

字符串标准处理函数介绍(string.h)、指针和数组当做函数形参,指针定义、函数返回指针、void类型定义指针、类型强制转换、常量声明、extern外边引用声明关键字。 1....指针可以当做数组使用,数组无法当做指针使用。 数组的名称: 就是首地址 在C语言里任何类型的指针(地址)是4个字节 2....函数参数: 指针数组类型 函数的形参: 指针类型数组类型 示例代码: () #include //标准输入输出 #include //字符串处理头文件...函数形参和返回值: 都是地址 (1)数组类型可以当做函数形参。void func(char buff[]){} (2)数组类型不能当做函数返回值类型。...char buff[] func(void){} 错误的 函数如果要返回地址类型: 必须使用指针类型。 函数形参如果要传入地址类型: 可以使用指针类型或者数组类型。

84020
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    c语言从入门到实战——数组指针函数指针

    数组指针函数指针 前言 数组指针和函数指针都是指针类型,但是它们指向不同的数据类型。 数组指针:数组指针指向的是数组类型。 函数指针:函数指针指向的是函数类型。...数组指针和函数指针是C语言中的两种重要指针类型。数组指针指向一个数组,可以用来访问和修改数组中的元素;而函数指针则指向一个函数,可以用来调用该函数。两者在语法和用法上有所不同,需要仔细区分。...C/C++会把常量字符串存储到单独的一个内存区域,当几个指针指向同一个字符串的时候,他们实际会指向同一块内存。但是用相同的常量字符串去初始化不同的数组的时候就会开辟出不同的内存块。...过去我们有一个二维数组的需要传参给一个函数的时候,我们是这样写的: #include void test(int a[3][5], int r, int c) { int i =...函数指针数组 数组是一个存放相同类型数据的存储空间,我们已经学习了指针数组, 比如: int *arr[10]; //数组的每个元素是int* 那要把函数的地址存到一个数组中,那这个数组就叫函数指针数组

    13810

    7.3 C语言数组作为函数参数

    01数组元素作函数实参 1、数组元素可以用作函数实参,不能用作形参。 2、在用数组元素作函数实参时,把实参的值传给形参,是“值传递”方式。 3、数据传递的方向是从实参传到形参,单向传递。...02 数组名作函数参数 1、除了可以用数组元素作为函数参数外,还可以用数组名作函数参数。...2、用数组元素作实参时,向形参变量传递的是数组元素的值,而用数组名作函数实参时,向形参传递的是数组首元素的地址。 3、用数组名作函数参数,应该在主调函数和被调函数分别定义数组。...4、实参数组形参数组类型应一致,如不一致,结构出错。 5、形参数组可以不指定大小,在定义数组时在数组名后面跟一个指针变量,用来接收一个地址。...C语言 | 统计捐款人数及人均捐款数 更多案例可以go公众号:C语言入门到精通

    2.7K2927

    C语言结构体数组、指针函数-学习二十八

    在声明了结构体类型之后,结构体数组的定义基本类型数组的定义完全相同。...指针变量的基类型必须结构体变量的类型相同。...运算符优先级高于 “*” 的 例如:(*sp).name (2)结构体指针变量 -> 成员名 C语言提供了一种简便的结构体指针变量取成员运算 “->”称为指向成员运算符(或箭头运算符),和 “.”...结构体作为函数参数 对结构体数据操作时,常常需要将结构体变量的成员、结构体变量、结构体数组名或结构体指针作为参数 传递给另一个函数。...3.用指向结构体变量(或数组元素)的指针作实参 用指向结构体变量(或数组元素)的指针作实参时,将结构体变量(或数组元素)的地址传递给形参。 结构体函数之间的关系主要是: 1.结构体作为函数的参数。

    1K20

    C语言数组作为函数参数-学习十九

    数组元素作函数实参 数组元素就是变量,它与普通变量并无区别。因此它作为函数实参使用普通变量是完全相同的, 在发生函数调用时,把作为实参的数组元素的值传递给形参,实现单向的值传送。...例子: 有两个数组 a,b,各有10个元素,将它们对应地逐个相比(即 a[0] b[0] 比....…)。...除了可以用数组元素作为函数参数外,还可以用数组名作函数参数(包括实参和形参)。...n; i++) { sum = sum + array[i]; } aver = sum / n; return aver; } image.png 注意 用数组数组元素名作函数参数不同点...用多维数组名作函数参数 多维数组元素一维数组元素一样,可以看作一个变量,所以在调用函数时可以作为实参,进行值的传递。

    1.7K20

    C语言数组作为函数参数「建议收藏」

    一:数组元素作为函数的实参 数组元素就是变量,普通变量没有区别,将数组元素传送给形参,实现单向的值传递。...:%d",m); } 二:数组名作为函数的实参 实质是地址的传递,将数组的首地址传给形参,形参和实参共用同一存储空间,形参的变化就是实参的变化。...:"); for(int i = 0;i < 10; i ++){ scanf("%d",&a[i]); } printf("排序后的数组顺序是:"); sort(a,10); for(int...i = 0; i < 10; i++){ printf("%d ",a[i]); } } 三:二维数组名作为函数参数 第一维的大小可以不指定,第二维的大小必须指定。...实参传送的是二维数组的首地址,使得二维数组ab共用同一存储单元,即a[0][0]b[0][0]共用同一存储单元,a[0][1]b[0][1]共用同一存储单元。

    1.8K10

    详解C语言指针函数函数指针、函数指针数组「建议收藏」

    C语言中,指针是一个很重要但是又很容易弄错的概念,也可以说指针就是C语言的灵魂,所以说学好指针对于完全掌握C语言是一个必须的过程。...而在指针中,指针函数函数指针、指针函数数组函数指针数组、指向函数指针数组的指针等等概念看着又绕又头疼。本问总结了一下以上一些概念以及用法,并给出例程深化理解。 1....声明形式:type (*func)(参数列表 ) 从上面的定义形式可以看出,函数指针和指针函数的直观上区别在于指针符号*函数名/指针名有没有用括号()包裹起来,从这一点来看是很容易区分两者的。...函数指针数组 顾名思义,就是每个元素都是函数指针的数组,直接在函数指针名后面加上数组符号[ ]即可。...C语言函数不可以定义为数组,只能通过函数指针来操作定义函数指针数组。 5.

    1.7K20

    c语言 数组存放规则,C语言数组详解

    语言允许用字符串的方式对数组作初始化赋值。...这是由于在C语言中规定,数组名就代表了该数组的首地址。 整个数组是以首地址开头的一块连续的内存单元。如有字符数组char c[10],在内存可表示如图4.2。...在执行函数printf(“%s”,c) 时,按数组c找到首地址,然后逐个输出数组中各个字符直到遇到字符串终止标志’/0’为止。...字符串常用函数语言提供了丰富的字符串处理函数, 大致可分为字符串的输入、输出、合并、修改、比较、转换、复制、搜索几类。 使用这些函数可大大减轻编程的负担。...说明gets函数并不以空格作为字符串输入结束的标志, 而只以回车作为输入结束。这是scanf函数不同的。

    6.2K30

    C语言 | 指针数组多重指针

    C语言什么是指针数组C语言中一个数组,若其元素均为指针类型数据,称为指针数组,也就是说,指针数组中的每一个元素都存放一个地址,相当于一个指针变量。...C语言指向指针数据的指针 //定义一个指向指针数据的指针变量: char **point; point的前面有两个*号。...C语言指针数组作main函数的参数 main函数的第一行一般写成 int main() 或 int main(void) 括号中是空的或void,表示main函数没有参数,调用main函数时不必给出实参...以上,如果你看了觉得对你有所帮助,就给小林点个赞,分享给身边的人叭,这样小林也有更新下去的动力,跪谢各位父老乡亲啦~ C语言学习路线    C语言开发工具 VC6.0、Devc++、VS2019使用教程...100道C语言源码案例请去公众号:C语言入门到精通

    1.8K20

    C语言系列】C语言数组

    Int x[]={1,2}; Char ca[5]={‘a’,‘A’,‘B’,‘C’,‘D’}; 数组名即代表数组的地址,数组的地址==数组名(ca)==数组的首元素的地址&ca[0] 在内存中,内存从大到小进行寻址...0; } Array数组ages数组的地址一致,若以数组作为函数的参数,这种传递方式是传址调用,传递的是整个数组的地址,修改形参数组元素的值,就是修改实参的值。...当你把一个数组当做参数来传递时,它会看做是一个指针,在该函数体内使用sizeof运算符来计算数组的长度,得出的数值永远为8,而非数组的实际长度,因为任何类型的指针都占8个字节的存储空间。...提示:数组作为一个函数的参数时,如果函数体涉及到数组遍历等操作,通常把数组的实际元素个数也作为参数传递给函数。...使用场合:五子棋,俄罗斯方块等, 假设: char Y[3][2]={ {‘A’,‘B’}, {‘C,‘D’}, {‘E,‘F’} }; 内存情况: ?

    28.6K62

    C语言--函数递归迭代

    ,一直打印hehe 总而言之,在函数中再次调用自己就是递归 如果递归无限的递归下去,就会出现这样的错误,栈溢出 // 每一次函数调用,都要为这次函数调用分配内存空间是内存的栈区上分配的, 如果无限的递归调用函数...a = b; b = c; n--;//当n是3的时候—1就是2,就不满足循环的条件 }//当n是4的=时候,c=1+1=2,然后b就变成下一个运算中的a了,...return c; //当n=1时,不执行循环,直接返回c //当n=2时,不执行循环,直接返回c } int main() { int n = 0; scanf_s...,一直打印hehe 总而言之,在函数中再次调用自己就是递归 如果递归无限的递归下去,就会出现这样的错误,栈溢出 // 每一次函数调用,都要为这次函数调用分配内存空间是内存的栈区上分配的, 如果无限的递归调用函数...return c; //当n=1时,不执行循环,直接返回c //当n=2时,不执行循环,直接返回c } int main() { int n = 0; scanf_s

    5310

    C语言 | 内部外部函数

    C语言函数的声明和定义 一个函数一般由两部分组成: 声明部分执 行语句 C语言对变量而言,声明定义的关系稍微复杂一些,在声明部分出现的变量有两种情况: 一种是需要建立存储空间的。...在函数中出现的对变量的声明,除了用extern声明的以外都是定义,在函数中对其他函数的声明不是函数的定义。 C语言内部函数 一个函数只能被本文件中其他函数所调用,它称为内部函数。...C语言外部函数 在定义函数时,在函数首部的最左端加关键字extern,则此函数是外部函数,可供其他文件调用。 C语言规定,如果在定义函数时省略extern,则默认为外部函数。...以上,如果你看了觉得对你有所帮助,就给小林点个赞,分享给身边的人叭,这样小林也有更新下去的动力,跪谢各位父老乡亲啦~ C语言学习路线    C语言开发工具 VC6.0、Devc++、VS2019使用教程...100道C语言源码案例请去公众号:C语言入门到精通

    1.4K30

    C语言函数参数

    一.函数 1.函数的概念 函数有时翻译为子程序。C语言中的函数就是一个完成某项特定任务的一小段代码。这段代码是有特殊的写法和调用方法的。...C语言的程序其实是由无数个小的函数组合而成,也可以说:应该大的计算任务可以分解成若干个较小的函数完成。同时,一个函数如果能完成某项特定任务的话,这个函数也是可以复用的,提升了开发软件的效率。...在C语言中我们一般会见到两类函数: 库函数 自定义函数 1.库函数 C语言标准规定了一组函数,这些函数再有不同的编译器厂商根据标准进行实现,提供给程序员使用。...三.数组函数参数 //写一个函数,将一个整形数组的内容全部置为-1,再写一个函数打印数组的内容。...,就得把数组作为参数传递给函数(只需要函数名),同时函数内部在设置每个元素的时候,也得遍历数组,需要知道数组的元素个数。

    8010

    C语言笔记】指针函数函数指针?

    前言 函数、指针这两个词结合的顺序不同其意义也不同,即指针函数函数指针的意义不同。 指针函数 指针函数的本质是一个函数,其返回值是一个指针。...主函数中,把一个数组的首地址数组长度作为实参传入指针函数pfun里,把指针函数的返回值(即指向数组的指针)赋给整形指针p。最后使用指针p来遍历数组元素并打印输出。...函数指针 函数指针其本质是一个指针变量,该指针变量指向一个函数C程序在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。...是一个函数名,那么func&func都表示的是函数的入口地址。...至于为什么func&func的含义相同,《嵌入式Linux上的C语言编程实践》这本书中有如下解释: 对于函数func来说,函数的名称就是函数代码区的常量,对它取地址(&func)可以得到函数代码区的地址

    1.4K30

    C语言------数组

    通过下标找到对应的元素 printf("%d", arr[5]); return 0; } 输出结果是:6 查找元素时使用的arr[],,,这里的[]是 下标引用操作符 上方面的...:0 1 2 3 4 5 6 7 8 9 十六进制的数字:0 1 2 3 4 5 6 7 8 9 10-a 11-b 12-c 13-d 14-e 15-f 十六进制中,逢十六进一,,,,,6c+4...个位上的c+4等用于12+4=16,满16进一,1+6=7,所以6c+4=70 所以上述的数组的地址都只相隔4 1个int类型的字节占4个字节 得出结论: 1.数组在内存中是连续存放的 2.随着数组下标的增长...,列不能省略 int date[][5] = {{1,2},{3,4},{5,6}}; 二位数组的使用 数组名是地址 c语言默认行和列默认从0开始的 int arr[3][5] = {1,2,3,4,5... int main() { //char arr[] = "abc"; //a b c \0 //0 1 2 3对应的下标,最右边的结尾c所对应的下标应该-1

    7610

    C语言数组

    C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。...声明数组C 中要声明一个数组,需要指定元素的类型和元素的数量,如下所示: type arrayName [ arraySize ]; 这叫做一维数组。...arraySize 必须是一个大于零的整数常量,type 可以是任意有效的 C 数据类型。...初始化数组C 中,您可以逐个初始化数组,也可以使用一个初始化语句,如下所示: double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0}; 大括号 { }...访问数组元素 数组元素可以通过数组名称加索引进行访问。元素的索引是放在方括号内,跟在数组名称的后边。

    5.1K10

    C语言——数组

    →   int arr [3] ={1,2,3}  数组如果初始化了,可以不规定大小,数组会根据初始化的大小来确定大小 c数组的类型 数组里的元素有分类型,数组也是有类型的,而数组算是一种自定义类型。...a,数组下标 C语言中,数组的下标是从0开始的,如果有n个元素,则第一个元素的下标为0,最后一个元素的下标为n-1 ,下面举例: 对于:            int arr [5] = {1,2,3,4,5...}; 数组元素:           1   2   3  4   5  对应下标:           0   1   2   3  4   C语言中 [ ] 是“下标引用操作符” ,...比如:arr [5]; 就是访问下标为5的元素;arr [0];就是访问下标为0的元素(即第一个元素) b,输入打印 当我们需要依次给数组输入数据时我们可以利用for循环和scanf函数,如: 输入:...arr double data [2] [8];        表示:定义一个2行8列的 double 数组data //定义一维数组不同的是,一维数组是指定长度,二维是指定行数和列数 //定义时

    15910
    领券