C语言指针的初步了解

文章目录

  • 指针变量的定义与初始化

  • 指针变量的引用

  • 指针变量的运算

  • 指针变量与一维字符数组

  • 指针变量与二维数组





前言

因为指针变量也是一个变量,所以编译系统也为它分配一个内存空间,大小一般为4或8个字节。与一般变量一样,它也有地址值,用取地址符&也可得到它的地址。





一、指针变量的定义与初始化

定义一个简单指针变量的格式如下。

类型说明符 *指针变量名;

C语言指针的初步了解_第1张图片

#include 
int main(void)
{
int a;
int *p=&a;
printf("%ld ,%ld\n", &a,p);  //输出变量a的地址值和p的值。
return 0;
}

C语言指针的初步了解_第2张图片

 C语言指针的初步了解_第3张图片




二、指针变量的引用

#include 
int main(void)
{
float *pointer=0,a=100,b=0;
printf("last= %f %f\n", a,b);
pointer=&a;  //把变量a的地址赋给指针变量pointer
*pointer=50.0f;    //把50.0f赋给pointer指向的空间
b=*pointer;        //从pointer指向的空间中取值,然后赋给变量b
printf("last= %f %f\n", a,b);
return 0;
}

C语言指针的初步了解_第4张图片

C语言指针的初步了解_第5张图片

有两个float型数据a,b,通过指针的方式把它们互换。

#include 
int main(void)
{
float a=4.3,b=6.5,temp=0,*p1=0,*p2=0;
p1=&a;     //两个地址指向的数据类型一致,可以赋值。
p2=&b;
temp=*p1;  //把p1指向的变量值赋给temp。
*p1=*p2;   //把p2指向的变量值赋给p1指向的变量。
*p2=temp;  //把temp赋给p2指向的变量。
printf("a=%2.1f,b=%2.1f \n",a,b);
return 0;
}

C语言指针的初步了解_第6张图片

C语言指针的初步了解_第7张图片

三、指针变量的运算

#include
int main(void)
{
int *p,a=5;
p=&a;             //p的值赋成&a,p指向变量a。
printf("p=%ld\n",p);  //输出当前p的值。
p=p+1;     
printf("p=%ld\n",p);
return 0;
}


C语言指针的初步了解_第8张图片

这里的p=p+1;执行后,p的值加一个p指向数据类型占用的字节数。因为这里p指向一个int型数据,一个int型数据在本次使用的编译器中占4个字节,所以+1时一次就加了4。

四,指针变量与一维字符数组

一个由小写英文字母组成的字符串存放在了一个维字符数组str中,用循环把每个小写字母改成大写,最后输出修改后的字符串

#include 
int main(void)
{
char str[10]="abcdef";
char *ch=str;   //定义一个指向char型的指针变量ch,初始化为
//字符数组的第0个字符地址。
for(;*ch!='\0';ch++)  //ch++后ch的值变化,ch指向下一个字符。
{
	printf("%c",*ch);  //*ch获取内存地址为ch处的数据。
   *ch=*ch-32;      //把*ch的值改成大写字母后赋给*ch。
}
printf("\n%s\n",str);
return 0;
}

C语言指针的初步了解_第9张图片

五,指针变量与二维数组

C语言标准规定,类型和元素个数不同的一维数组属于不同的数据类型。如图int a[2][3]={ {1,2,3},{4,5,6}};此时a的值是首元素的地址,它指向的数据类型是具有3个int型的一维数组,标准数据类型写法是int[3]

写一个程序,用指针把一个二维数组中的变量值全部输出出来。

#include 
int main(void)
{
    int a[2][3]={
    {1,2,3},{4,5,6}};
	for(int i=0;i<2;i++)
	{
		for(int j=0;j<3;j++)    //输出一行的数据。
			printf("%d  ",*(*(a+i)+j));
		printf("\n");
	}
	return 0;
}

C语言指针的初步了解_第10张图片


你可能感兴趣的