《每天一分钟学习C语言·一》

2023-12-19 21:31:06

1、转义字符:\n换行,\t前进一个tab键,\b退格键

2、八进制前面有0,%o或者%#o表示八进制,十六进制前有0X,%0x或者%#0x表示十六进制

3、%u打印无符号数,%g显示小数,类似于%f,但%g后面不补0

4、sizeof输出总的字节数,strlen输出字符串长度(结尾的空字符不算在内)

5、Scanf 在遇到空格或者换行符停止读取,空格或换行符会留在输入流中等待读入语句处理,为避免这种情况可用gets()。gets和getchar都会读入换行符

void mian()
{
	int ch;
	While((ch=getchar()) != ‘y’)
	{
		While((ch=getchar()) != ‘\n’)
		{
			putchar(ch);
		}
	}
}

getchar每次读取一个字符,输入abc回车后,第一个while循环中的getchar先读取a赋值给ch,判断和’y’不相等进入第二个while循环,内循环的getchar继续读取一个字符b赋值给ch,此时ch里面的值已经由a跟新为b,判断不是回车符输出b,内循环还未结束,getchar继续读取下一个字符c与回车符比较,不等输出c,继续读取回车符,这时相等,结束内循环来到外循环

6、不能对未初始化的指针赋值,如int *pt; *pt=5;
当创建一个指针时,系统只分配了用来储存指针本身的内存空间,并不分配用来储存数据的内存空间,因此在使用指针前,必须给它赋予一个已分配的内存地址,比如把一个已存在的变量的地址赋给指针,或者使用malloc函数来分配内存。

7、m=3.14;
%8.3f 空空空3.140
%-8.3f 3.140空空空

8、二位数组

arr[][]
a==&a[0]== &&a[0][0]
a[0] == &a[0][0]
a+1==&a[0]+1==&a[1]
*(a+i) == a[i] == &a[i][0]
*(a+i)+1==&a[i][0]+1==&a[i][1]
*(*(a+i)+j)==a[i][j]

int arr[4][2]={{2,4},{6,8},{1,3},{5,7}};
int (*arr1)[2]=; //arr1指向一个包含两个int值的数组的指针,arr1相当于二维数组arr[][]的arr
arr1=arr;
*arr1[0]==*arr[0]==*&arr[0][0]==2;
arr1[2][1]==3;

函数中声明一个二位数组时可以void fun(int arr[][4])或者void fun(int(*a)[4])

9、extern关键字引用不在同一个文件中的变量或者函数
$1:

int main()
{
	extern int num;  //引用其他文件变量
	extern void fun();  //引用其他文件函数
	fun();
	Printf(%d”,num);
	Return 0;
}

$2:

#include <stdio.h>
int num = 5;
void fun()
{
	Printf(“被其他文件引用”);
}

$1中定义了extern,如果想要引用$2中的变量,那$2中的变量必须是全局变量

10、对一个常量指针无法做修改,如char *arr =”abdec”; 若arr[0]=’b’;
则会报错

在这里插入图片描述

文章来源:https://blog.csdn.net/cs1395293598/article/details/135089380
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。