c语言指针变量(c语言void)
大家好,今天小编来为大家解答以下的问题,关于c语言指针变量,c语言void这个很多人还不知道,现在让我们一起来看看吧!
c语言指针变量和普通变量的区别
指针和普通变量的区别,最简单的思考应该按整数的两个不同用法着眼:
整数可以表示序号和数量----数量的概念不必说了,但序号的概念人人都懂但不透彻。
2012表示年----这是序号,它的下一年是2013,即2012+1可得2013,但这里的1是什么?是公元1年吗----是序号还是数量?
2012是今年,2013是明年,两者能相加吗?序号+序号是什么?
指针是什么?指针是严格意义上的序号----存储位置的编号!
所以指针+数量为指针----成立
反之指针-指针为数量----成立
指针+指针------不成立
C和C++中源代码级对存储数据的访问有两种方法:按名字和按指针----就象在大街上按名字(类似变量名)或按门牌号(类似地址)访问商店一样。
1、指针变量是变量的一种,指针变量的值是地址(也是整数),普通变量的值是整数、实数或者其他类型。指针变量的主要作用是修改其他函数的局部变量和访问数组。指针变量需要额外的空间存放地址,由于指针变量是间接访问所指对象,所以比起直接用普通变量名字访问所指对象而言,速度稍慢。
2、例如:int a=5; int*p=&a;
指针p是一个整型指针变量,里面存的是一个地址,这个地址是a的地址。通过取值运算符*就可以用p访问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));
C语言指针变量的赋值和做函数的参数
1、指针变量的赋值,分为定义时赋值(初始化)和单独赋值,如:
intx;
int*px=&x;//定义时赋值,也称初始化,注意这里的*是跟随int的,即变量px是int*类型变量!实际上的赋值语句是px=&x;
int*py;
py=&x;//单独赋值,将py指向x
*py=10;//这里的*,是引用指针中的数据操作符,*跟随的变量必须是指针类型变量,否则会出错!*py就是x,这里相当于x=10;2、指针变量作为函数的参数时,子函数可以通过指针引用实参地址中的数据,达到修改实参地址中的数据。如:
#include<stdio.h>
voidfunc(inta,intb,int*pmax)
{
if(a>b)*pmax=a;
else*pmax=b;
}
voidmain()
{
inta=2,b=3,max=0;
func(a,b,&max);//这里将变量max的地址传递到子函数,子函数中通过该地址,可以修改max的值,达到子函数结束后,max能带回运算结果的效果。
printf("max=%d
",max);
}
关于c语言指针变量,c语言void的介绍到此结束,希望对大家有所帮助。