所以:假设不成立,数组名不是指针 2、数组名神似指针 上面我们已经证明了数组名的确不是指针,但是我们再看看程序的第5行。该行程序将数组名直接赋值给指针,这显得数组名又的确是个指针! 我们还可以发现数组名显得像指针的例子: 代码 标准C库函数strcpy的函数原形中能接纳的两个参数都为char型指针,而我们在调用中传...
1 数组名是个指针常量,保存的是数组的首地址,即“数组第一个元素的起始地址”,为什么这么说呢?因为数组的元素可能是整形,字符型,假如是整形,那么一个元素占4个字节,而每个字节都对应一个地址,那么数组名保存的地址是哪个呢?是第一个元素的第一个字节的地址。2 既然数组名是指针了,那么可不可以将数组...
intarr[3]={1,2,3};intsum_arr(intarr[],intn);//用整型变量n明确指出数组大小
最大的差别就是指针可以改变,可以通过指针改变指向内容的值,但数组名不行 举个例子:(分别作为形参)int num[10], *p;p = num;//此时p指向数组的第一个元素 我在主函数里调用两个函数 1 Sum(num);2 Sum(p+2,10);这就有区别了,因为num数组首地址它不能变化,但是此时p指向了数组的...
c语言 数组名是常量指针 //数组名是常量指针#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>//char (*pin)[20]二维数组指针的定义intgetrequerstr(char(*pin)[20],intpinlen,constchar* pkey,char*pout){//定义返回keyintERRO_MSG =0;//形参非空校验if(pin ==...
C语言中,数组名和指针之间有着密切的关系,但它们并不完全相同。理解它们之间的区别和联系对于掌握C语言的内存管理和数据结构至关重要。数组名是一个常量指针,指向数组的起始地址,而指针变量可以被重新赋值。 1、数组名和指针的关系 数组名是一个标识符,代表数组的首地址,即数组第一个元素的地址。指针是一个变量,...
(3)指向数组的指针则是另外一种变量类型(在WIN32平台下,长度为4),仅仅意味着数组的存放地址! 1、数组名指代一种数据结构:数组 现在可以解释为什么第1个程序第6行的输出为10的问题,根据结论1,数组名str的内涵为一种数据结构,即一个长度为10的char型数组,所以sizeof(str)的结果为这个数据结构占据的内存大小:10...
C语言中,数组名和指针之间有着密切的关系,但它们并不完全相同。理解它们之间的区别和联系对于掌握C语言的内存管理和数据结构至关重要。数组名是一个常量指针,指向数组的起始地址,而指针变量可以被重新赋值。 1、数组名和指针的关系 数组名是一个标识符,代表数组的首地址,即数组第一个元素的地址。指针是一个变量,...
1、数组名不是指针 我们先来推翻"数组名就是指针"的说法,用反证法。 证明 数组名不是指针 假设:数组名是指针; 则:pStr和str都是指针; 因为:在WIN32平台下,指针长度为4; 所以:第6行和第7行的输出都应该为4; 实际情况是:第6行输出10,第7行输出4; ...
(3)指向数组的指针则是另外一种变量类型(在WIN32平台下,长度为4),仅仅意味着数组的存放地址! 1、数组名指代一种数据结构:数组 现在可以解释为什么第1个程序第6行的输出为10的问题,根据结论1,数组名str的内涵为一种数据结构,即一个长度为10的char型数组,所以sizeof(str)的结果为这个数据结构占据的内存大小:10...