C语言基础

为了学习数据结构,整理一篇基础的C语言入门知识(仅供自身学习用)

条件运算符

语法:exp1 ? exp2 : exp3;
exp1是条件表达式,如果结果为真,返回exp2
如果结果为假,返回exp3

if (a > b)
	max = a;
else
	max = b;

与下面语句是等价的

max = a > b ? a : b
goto语句

语法:goto标签;

#include <stdio.h>

int main()
{
	int i = 5;
	while (i++)
	{
		if (i > 10)
		{
			goto A;
		}
	}
A:	printf("Here, i = %d\n", i);
	return 0;
}

在C语言中尽量少用goto语句,容易破坏原来的代码逻辑。

int 占据四个字节, char型占据一个字节,double型占八个字节。

使用循环来访问数组

int a[10];
for (i = 0; i < 10; i++)
{
	a[i] = i;
}

录入班级十个人的成绩,并求平均数

#include <stdio.h>
#define NUM 10

int main()
{
	int s[NUM];
	int i, sum = 0;
	
	for (i = 0; i < 10; i++)
	{
		printf("请输入第%i位同学的成绩::, i + 1);
		scanf(“%d", &s[i]);
		sum += s[i];
	}
	printf("本次考试的平均分数是:%.2f\n", (double)sum / NUM);
	return 0;
}
指针

定义指针变量
类型名 *指针变量名
char *pa; //定义一个指向字符型的指针变量
int *pb; //定义一个指向整型的指针变量

如果需要获取某个变量的地址,可以使用取地址运算符( & )
char *pa = &a;
int *pb= &f;
如果需要访问指针变量指向的数据,可以使用取值运算符 ( * )
printf(“%c, %d\n”, *pa, *pb);

#include <stdio.h>

int main()
{
	char a = 'F';
	int f = 123;

	char *pa = &a;
	int *pb = &f;

	printf("a = %c\n", *pa);
	printf("f = %d\n", *pb);

	*pa = "C";
	*pb += 1;

	printf("now, a = %c\n" ,*pa);
	printf("now, f = %d\n" ,*pb);

	printf("sizeof pa = %d\n", sizeof(pa));
	printf("sizeof pb = %d\n", sizeof(pb)); \\指针地址都是4字节

	printf("the addr of a is : %p\n", pa);
	printf("the addr of b is : %p\n", pb);
	
	return 0;
}
*(array+i) == array[i]
*(*(array+i)+j) == array[i][j]
*(*(*(array+i)+j)+k) == array[i][j][k]

初始化二维数组是可以偷懒的

int array[2][3] = {{0,1,2}, {3,4,5}}
可以写成
int array[][3] = {{0,1,2}, {3,4,5}}

定义一个数组指针是这样的
int (*p)[3];
#include <stdioo.h>

int main()
{
	int array[2][3] = {{0,1,2}, {3,4,5}};
	int (*p)[3] = array;

	printf("**(p+1): %d\n", **(p+1));
	printf("** array+1): %d\n", **(array+1));
	printf("array[1][0]: %d\n", array[1][0]);
	printf("*(*(p+1)+2): %d\n", *(*(p+1)+2));
	printf("*(* array+1)+2): %d\n", *(*(array+1)+2));
	printf("array[1][2]: %d\n", array[1][2]);

	return 0;
}

void指针
void指针称为通用指针,它可以指向任意类型的数据,任何类型的指针都可以赋值给void指针。

#include  <stdio.h>

int main()
{
	int num = 1024;
	int *pi = &num;
	char *ps = "FishC";
	void *pv;
	
	pv = pi;
	printf("pi:%p, pv:%p\n", pi, pv);

	pv = ps;
	printf("ps:%p, pv:%p\n", pi, pv);

	return 0;
}
输出的内容是指针指向的地址

NULL指针

#define NULL ((void *)0)

指向指针的指针

#include <stdio.h>

int main()
{
	int num = 520;
	int *p = &num;
	int **pp = &p;

	return 0;
}
num 520
p &num
*p num 520
pp &p
*pp p &num
**pp *p num 520
结构体

定义结构体类型变量
struct 结构体名称 结构体变量名
或者在结构体尾部定义变量

要访问结构体成员,我们需要引入一个新的运算符,点号(.)运算符。比如book.title就是引用book结构体的title成员,它是一个字符数组;而book.price则是引用book结构体的price成员,它是一个浮点型的变量。

#include <stdio.h>

struct Book
{
	char title[128];
	char auther[40];
	float price;
	unsigned int date;
	char publisher[40];
} book;

int main(void)
{
	printf("请输入书名:”);
	scanf("%s", book.title); 
	printf("请输入作者:”);
	scanf("%s", book.author);
	printf("请输入售价:”);
	scanf("%s", &book.price);
	printf("请输入出版日期:”);
	scanf("%s", &book.date);
	printf("请输入出版社:”);
	scanf("%s", book.publisher);

	printf("\n=====数据录入完毕=====");

	printf("书名:%s\n", book.title);
	printf("作者:%s\n", book.author);
	printf("售价:%s\n", book.price);
	printf("出版日期:%s\n", book.date);
	printf("出版社:%s\n", book.publisher);

	return 0;

结构体指针
通过结构体指针访问结构体成员有两种方法
(*结构体指针).成员名
结构体指针->成员名

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值