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

数组名是指针常量还是常量指针(fork函数的作用)

数组名是指针常量还是常量指针(fork函数的作用)

大家好,关于数组名是指针常量还是常量指针很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于fork函数的作用的知识点,相信应该可以解决大家的一些困惑和问题...

大家好,关于数组名是指针常量还是常量指针很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于fork函数的作用的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

二维数组的数组名是常量还是变量

二维数组的数组名应该是地址常量。

二维数组名为什么不能直接赋值给二级指针

——为何可以int(*p)[n]=&a[i],而不能p=a[i]赋值(0<=i<m)?

p是什么?p首先是一个指针,存放了一个包含n个整型数据的数组(姑且叫他数组甲)的地址,这个时候我们可以认为数组甲,是一个有很多个类似于数组甲这样的元素构成的数组(我叫他数组乙,很显然,乙是个二维数组,数组的数组)的首元素,数组甲的地址就是数组乙的首元素的地址,所以p就可以当作数组乙的名字来赋值(二维数组名,也就是a)。

现在a是二维数组,先把a降维,看成是有m个元素组成的一维数组。那么a[0]是什么?是a这个现在被我暂时看成一维的数组的首元素。对首元素取地址,就是数组名。所以a==&a[0]。以此类推,a+i==&a[i]。那么a[0][0]又是什么?是对a取星以后的a[0]的首元素,也就是数组名,所以a[0]==&a[0][0],所以**a==a[0][0]==

*(*

(a+i)+j),只不过这里ij都是0。

所以,p这么一个指向数组的指针,可以赋给它a[0]的地址(a的首元素地址,也就是a),p=a=&a[0],以此类推,p+i=&a[i]。所以你的p=a[i]不对,a[i]是降维之后a的第i个元素同时又是个一维数组名,表示a[i][0]地址,只能赋给一个指向整型数据的指针。而你的p是个指向数组的指针,赋值符号左右端类型不同,这上哪能赋值?

你后面这p=&a[i]语法上是不错,但是是强制让p指针下移i个位置了,因为p+i=&a[i](假设你已经赋值p=&a[0]),你这个不就相当于p=p+i,也就相当于p+=i。也不是个特别好的写法。

另外,如果你再定义一个int*q;然后q=a。这是可以的,a可以降维也可以不降维直接用。这时q=&a[0][0]

——在一维数组中却只能用p=a,而不能用p=&a.

在一位数组里面,你就得这样定义:int*p;这样p里面存的是一个整型变量的“坑”的坑号。而一维数组a数组名不就是他自己首元素的坑的坑号?当然可以赋值p=a。

p=&a表示的是什么?a本来就是一个地址,你还要再对a取地址,应该还是它本身,但是含义不同。

非形参数组名都是指针常量,对指针常量取地址还是它本身(或者压根取不了地址,因为常量可能没地址)。

你也可以在编译器里面打一下看看会不会报错。

数组的表示法

数组元素地址可以是数组名,或者数组名加上常数,或者数组元素取地址。比如aa+i&a[i]这三种形式都是元素地址。元素本身,可以对元素地址取值,也可以用下标方式。比如a[i]或者*(a+i)

数组是一组什么数据的集合,其中的每个元素称为什么

C语言数组中:构成数组各个元素具有相同的数据类型。在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。以C语言中的一维数组为例,一维数组的定义方式为:类型说明符数组名[常量表达式];其中,类型说明符是任一种基本数据类型或构造数据类型。数组的类型实际上是指数组元素的取值类型。其实,从变量的角度看,每个数组元素(相当于变量)具有的属性:数组元素名、数据类型、值、内存地址中,能每个元素都相同的也只能是数据类型。

c语言数组名值可变吗

c99以前的版本是没有的,数组大小必须是常量或者是常量表达式,c99版本才加入变长数组

c语言指针可以指向枚举类型吗

C语言指针用法灵活,基本类型指针,

通用指针void*

指针数组和数组指针

函数指针和指针函数

结构指针和联合指针

枚举指针

指针常量和常量指针

指针的指针

基本类型指针

指向整型和浮点型的指针。包括char,int,float,double类型指针

通用指针

void*声明一个通用指针,该指针可以和除函数指针类型之外指针类型相互转换。

例如:

void*p;

int*ip;

p=ip;

ip=p;

指针数组和数组指针

指针数组:指针数组的每个元素都是指针类型。

例如:

//ip是数组类型,数组中每个元素是int型指针。

int*ip[];

//fp是数组类型,数组中每个元素是float型指针。

float*fp[];

数组指针:指针类型,指向数组。

例如:

inta[100];//声明和定义数组a

int*pa=a;//声明指针pa,并且将数组a的首地址赋值给pa

inta1=*(pa+1);//获取数组a第2个元素的值,即a[1]的值

注:数组名本身就是当做地址常量赋值给指针,不需要&地址运算符。

函数指针和指针函数

函数指针指向特定函数类型的指针。

例如:

//fp是指针,指向返回值为int型,有1个int型参数的一类函数

int(fp)(int);//fp是指针,指向返回值为double型,有2个double型参数的一类函数double(fp)(double,double);

//fp是指针,指向返回值为int型指针,有1个int型参数的一类函数

int(fp)(int);

注:指针函数是指返回值为指针类型的函数,本质上是函数类型;函数指针是指向函数类型的指针,本质上指针类型。

结构指针和联合指针

指向结构类型、联合类型的指针。

例如:

struct

枚举指针

指向枚举类型的指针。

例如:

enum

指针常量和常量指针

指针常量:指向常量的指针,指针本身是变量。

例如:

constintp=1;//定义常量p

constint*ptr=&p;//ptr是指针,指向constint*常量int型

inti=2;

p=i;//此时出错,不能给常量赋值

ptr=&i;//正确,ptr是指针变量,可以赋值

常量指针:指向变量的指针,指针本身是常量。

例如:

intp=1;//定义变量p

intconstptr=&p;//ptr是指针常量,指向变量int型

inti=2;

p=i;//正确,p是变量

ptr=&i;//错误,ptr是常量指针

指针的指针

C语言支持多重指针,即指向指针的指针。

例如:以下都可以输出变量i的值。

#include

输出结果:

10

文章分享结束,数组名是指针常量还是常量指针和fork函数的作用的答案你都知道了吗?欢迎再次光临本站哦!

最新文章