关于C语言的学习笔记#6

指针基础

指针是C语言的重点内容之一。
在计算机中,存放运算数据是内存条。内存条内部划分为数个小空间,每个小空间的大小为1字节,且每个空间都有一个16进制的地址。
十六进制:一种逢16进1的计数制,用1、2、3、4、5、6、7、8、9、a、b、c、d、e、f(末尾六个字母分别代表10-15)表示。
指针所表示的对象为内存的地址。指针变量存储变量的地址。
通常而言,一个变量是占据多个空间的。如int变量占据4个字节,因此它会占用4个地址。这4个地址在内存中是连续的4个数字。
对于指针变量来说,知道了数据类型和第一个地址,就能推算出其它地址,因此指针变量通常只会存储变量的第一个地址。
创建:指针变量的创建方式与普通变量的创建类似,需要用到“*”解引用操作符以及“&”取地址操作符。
指针变量表示的是变量的地址,其数据类型前缀需要与原变量相一致。
在不使用指针变量存储地址时,使用取地址操作符也能起到临时调用的效果,例如:

int main()
{
	int a = 7;  //创建整型变量a的指针变量pa
	printf("%p",&a);/*%p为地址占位符,
	而"&"表示取出变量a的地址。结果输出a的地址*/
	return 0;
}

如果是创建,则需要使用到解引用操作符。
创建格式如下:

int main()
{
	int a = 5;
	int * pa = &a;
	printf("%p",pa);//输出a的地址
	return 0;
}

对于其它类型的变量同理。以下为其它指针变量的创建,省略对初始变量的定义:

char * pa = &a;
double * pb = &b;
float * pc = &c;

基础运用
在运算中,程序可以通过指针变量导向的地址获取变量的值。

int main()
{
	int a = 5;
	int * pa = &a;
	printf("%d",*pa); //“*”表示获取pa地址所指向的变量
	return 0;
}

程序也可以通过指针变量导向的地址改变变量的值。

int main()
{
	int a = 5;
	int * pa = &a;
	*pa = 20; //通过地址改变变量a的值
	printf("%d",a); //输出20
	return 0;
}

结构体基础

结构体是由一批数据组合而成的结构型数据。
结构体需要在函数外进行声明并定义其形式。这需要用到struct指令。
结构体中的变量称为结构成员。

struct a //在函数外创建一个结构体形式,命名为a
{
	int number; /*该结构体中包含三个变量数据,即结构成员*/
	char name[20];//汉字所占的长度较大
	double score;
};

上述代码可以理解为,在函数中使用结构体之前,先声明一种结构体类型,给出结构体内的结构成员,指导程序在之后的创建中如何去使用。上述结构体形式a在函数中可以有多个,只需要这些结构体变量之间的名字不同即可。
在函数中初始化结构体:

int main()
{
	struct a b;//创建一个a类型的结构体b
	b = {8,"张三",78.5};//根据a结构体内变量的排序一一赋值
	return 0;
}

对结构体进行操作一般需要用到结构体成员操作符。

int main()
{
	struct a n ={8,"张三",78.5};
	printf("%d,%s,%lf",n.number,n.name,n.score);
	/*打印的结果为8,张三,78.5*/
	return 0;
}

在上述代码中,操作符"."为结构成员操作符之一,可以从特定结构体中取出指定的变量。
使用指针变量也能实现上述效果。

int main()
{
	struct a n ={8,"张三",78.5};
	struct a * pa = &n;
	printf("1:%d,%s,%lf\n",(*pa).number,(*pa).name,(*pa).score);
	printf("2:%d,%s,%lf\n",pa->number,pa->name,pa->score);
	//上述两种输出方式是等效的,只是使用了不同的操作符而已
	return 0;
}

至此,C语言基础知识概念已大致了解,将进入到下一阶段的学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值