c语言指针变量定义,c语言指针变量的定义和使用

http://www.itjxue.com  2023-01-07 00:38  来源:未知  点击次数: 

C语言指针变量定义?

根据你的定义,使用LinkList定义的变量是指针变量,而加上*即LinkList *C表示的是指向指针的指针,表示二级指针变量。

你的合并函数是一个没有返回值的函数,所以你在函数体内更改C要达到更改实参的效果,你必须传入实参的地址。

如果是一级指针,C接收实参指向的对象地址,如果此时在函数体内对C进行赋值,只是改变了函数体内C的指向,实参还是指向原来的地址。函数内是改变不了实参C本身的指向,只有传入实参C变量本身的地址,那么形参就要定义指向指针的变量来接收实参。

以上是一种方法,另外一种方法就是通过函数返回值,返回新合并的链表的头。那函数类型就可以改为:

LinkList MergeList(LinkList a, LinkList b)。

这可以多练习好好理解一下。

C语言指针定义

(1)指针变量定义的格式:

类型标识符 *变量名; 如:int *point;

注意:在定义int point;的时候 ,加粗部分的 不是取值符,而是修饰point是一个指针变量,如何确定point指向什么类型的变量呢,需要进行下一步:看非加粗部分,int则表示point指向int类型变量或保存int类型变量的地址。

(2)指针变量的初始化,先来看个实例:

说明:

表示该变量的类型是一个指针变量,指针变量名是p1而不是 p1;

如果在同一行定义多个指针变量应该是:int *p1, *p2;而不是int p1, p2或者 int p1, p2;

给指针变量初始化有两种方式:

在定义时初始化,如int *p_2 = b;

先定义再初始化,如int *p1; p1 = a;

*p1是p1所指向的变量的值;

一个指针变量只能指向同一个类型的变量。

(3)对于指针变量的两个运算符“*”与“”:

取地址运算符 //a就代表a的地址(指的是a所在内存空间的起始地址)

C语言指针基本概念及其指针变量的定义是什么

语言中,指针是一种类型,被称为“指针类型”。指针类型描述的是一个地址,这个地址指向内存中另外一个对象的位置。简单地说,指针表示的是它所指向对象的地址。

1、比较point,*point,point三者的区别

对于int * point;

point:是指针变量,其内容是地址量。

*point:是指针变量的目标变量,即指针指向的那个变量,其内容是数据。

point:是指指针变量本身所占据的存储地址。

2、指针与数组

用指针和数组名在访问内存中的数据时,他们的表现形式是等价的,因为他们都是地址量。

数组名表示整个数组的首地址,可以看作是固定地址的指针,不能被赋值。

数组名无须赋初值,而指针在使用前必须赋初值。

3、字符指针和字符串

字符串是一个字符数组,字符串以‘\0’结束。printf函数的%s格式输出字符时,是从给定的地址开始,到遇上第一个‘\0’字符时结束。

对字符指针初始化,是将字符串的首地址赋给指针。

4、指针型函数

所谓指针型函数,即返回值是指针(地址)的函数。

5、多级指针

指向指针的指针(**p)就是二级指针,指向指针的指针的指针(***p)是3级指针。

多级指针类似于间接寻址。

6、指向函数的指针

C语言中的函数名表示函数的首地址,即函数执行的人口地址。

定义形式:[存储类型][数据类型标示符](*指向函数的指针变量名)();

例子: int(*fun)();//指向函数的指针 , int * fun(); //指针型函数,注意(* fun)括号不能少

7、动态指针

当需要一大片内存的时候,最好使用动态分配。

使用malloc函数:void * malloc(size_t size)。

例子:

int * pn=malloc(10*sizeof(int));

double *pd=malloc(10*sizeof(double));

指针变量的定义

1. 定义指针变量的一般形式如下:

类型名*指针变量名1,*指针变量名2,... *指针变量名n ;

2. 空指针

空指针是一个特殊的指针,它的值是0,C语言中用符号常量NULL(在stdio.h中定义)表示这个空值,并保证这个值不会是任何变量的地址。空指针对任何指针类型赋值都是合法的。一个指针变量具有空指针值表示当前它没有指向任何有意义的东西。

3. void指针

(void *)类型的指针叫通用指针,可以指向任何的变量,C语言允许直接把任何变量的地址作为指针赋给通用指针。但是有一点需要注意void*不能指向由const修饰的变量,eg const int test; void * ptv; ptv = test;第三句是非法的,只有将ptv申明为const void * ptv;上述第三句(ptv = test),才是合法的.

当需要使用通用指针所指的数据参加运算时,需要写出类型强制转换。如通用指针ptv 所指空间的数据是整型数据,p是整型指针,用此式转换:p=(int *)ptv ;

(责任编辑:IT教学网)

更多

推荐3DMAX教程文章