0
点赞
收藏
分享

微信扫一扫

【例8-1】指针变量的定义

westfallon 2022-02-18 阅读 64

计算机的内存是以字节为单位的一片连续的存储空间,每一个字节都有一个内存地址。

scanf_s("%d",&n);	            //使用地址运算符&获得变量n的存储地址
char str[10];gets_s(str,10)		//一维数组的名称str代表该数组在内存中的首地址

&n就是变量n的指针,str就是字符数组str[10]的指针
C语言允许用一个变量来存放指针,这种变量称为指针变量,指针变量的值就是某个内存单元的地址。
(一)指针变量的定义
定义指针变量的一般格式为:
类型标识符 *指针变量名;
(1)"类型标识符"表示该指针变量所指向的变量的数据类型。
(2)一个指针变量只能指向同一种类型的变量,不能定义一个变量指针即能指向整型变量又能指向其它类型变量。
(3)"指针变量名"前的"*"是指针标识符,不能省略。
(4)定义指针变量时,和基本类型变量一样,可以进行初始化,即赋初值。
(5)空指针:指针变量被初始化为NULL,其值为0,该指针不指向任何有效数据。

//指针变量的定义演示1

#include<stdio.h>
int main()
{
	int n;		//定义一个整型变量n
	int* p;		//定义一个指针变量p,仅能存放int 型变量的地址	(定义)
	p = &n;		//将整型变量n的地址存放到p	(初始化)
  //可以将定义与初始化合并
  //int* p = &n;
	scanf_s("%d", p);	//等价于scanf_s("%d",&n);
	printf("%d", *p);	//等价于printf("%d",n);	

	return 0;
}

//指针变量的定义演示2

#include<stdio.h>
int main()
{
	char str[10];
	char* cp;
	cp = str;	//将字符数组 str 的首地址存放到 cp 中
  //可以将定义与初始化合并
  //char* cp = str;
	gets_s(cp, 10);
	puts(cp);

	return 0;
}

//随堂练习8-1
1.有"double s;",定义一个指向变量 s 的指针变量 q 。

double *q = &s;

2.编程验证演示(1)和演示(2)中,指针变量的值是否与其所指向变量的地址相同。
(1)

#include<stdio.h>
int main()
{
	int n;
	int* p = &n;
	scanf_s("%d", p);
	printf("%p\n", p);	//输出指针变量p的值
	printf("%p\n",&n);	//输出p所指向变量n的地址

	return 0;
}

 (2)

#include<stdio.h>
int main()
{
	char str[10];
	char* cp = str;
	gets_s(str, 10);
	printf("%p\n", cp);		//输出指针变量cp的值
	printf("%p\n", str);	//输出cp所指向字符数组str的首地址

	return 0;
}

结论:指针变量的值与其所指向变量的地址相同。 

举报

相关推荐

0 条评论