C语言入门--define|指针|结构体

关键字define

1.定义常量   #define MAX 1000               #define STR "abcdef"

2.定义宏       #define ADD(x,y) ((x)+(y))

 指针

内存的一个单元 1字节 给每个单元编号 ---内存单元的地址

指针其实就是地址,地址就是内存单元的编号

把地址进行存储的时候,就可以放到一个变量中,这个变量就是指针变量

int main() {
	int   a = 10;
	int * pa = &a;  //pa是创建出来存放地址的,pa就是指针变量  把地址也叫指针 编号 = 地址 = 指针 
	// int * 整体是一个类型 整型指针类型
	// * 说明 pa 是指针变量
	// int 说明 pa指向的对象是 int类型 
	return 0;
}

通过地址访问变量:

 // & -- 取地址操作符 取出变量的地址

// * -- 解引用操作符(间接访问操作符),通过地址找到地址指向的内容

指针变量的大小

指针变量是用来存放地址的,所以指针变量的大小取决于存储一个地址需要多大的空间

例如32bit系统:有32根地址线,0000 0000 0000 0000 0000 0000 0000 0000    32个0/1组成地址序列,需要32bit的空间来存储,所以 32Bit指针变量的大小需要4个字节  64bit系统指针变量的大小8个字节

结构体

void Print(struct Stu * ps)
{
	//1.
	//printf("%s %d %f\n", (*ps).name, (*ps).age, (*ps).score);
	//2. 结构体指针 -> 结构体成员
	printf("%s %d %f\n", ps->name, ps->age, ps->score);
}
int main() {
	struct Stu s = { "zhangsan",20, 95.5f };
	struct Stu s2;
//	printf("%s  %d %f",s.name ,s.age,s.score);
	Print(&s);
	//输入数据到s2中
	scanf("%s %d %f", s2.name, &(s2.age), &(s2.score));
	Print(&s2);
	return 0;
}

错题总结:

1,

strlen是用来获取字符串的有效长度的,结尾标记'\0'不包含在内。

strlen获取的规则非常简单:从前往后依次检测,直到遇到'\0'是就终止检测。而上体中arr是一个字符数组,不是一个有效的字符串,因为后面没有放置'\0',因此strlen在求解时,将有效字符检测完之后,还会继续向后检测,直到遇到'\0'是才终止,因此答案为不确定,就看紧跟在't'之后的第一个'\0'在什么位置。

2.数组的大小必须是常量

 3.常见的转义字符

strlen:获取字符串的有效长度,不包括'\0'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值