这是一篇满满的c语言的干货文(做题总结+数组指针部分笔记)!

||和|,&&和&的区别
 首先 &和| 称为布尔运算符,&&和|| 称为条件布尔运算符。
  两种运算符得到的结果完全相同,但得到结果的方式又一个重要区别:条件布尔运算符性能比较好。他检查第一个操作数的值,再根据该操作数的值进行操作,可能根本就不处理第二个操作数。
(表达式1)&&(表达式2) 当表达式1为假时,不执行表达式2
(表达式1)||(表达式2) 当表达式1为真时,不执行表达式2
注:非0 即为真

逗号表达式(表达式1,表达式2)
从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。如:(3+5,6+8)称为逗号表达式,其求解过程先表达式1,后表达式2,整个表达式值是表达式2的值。
三目运算符(<表达式1>?<表达式2>:<表达式3>)
在运算中,首先对第一个表达式进行检验,如果为真,则返回表达式2的值;如果为假,则返回表达式3的值。
运行结果:
a=-2
b=-1
sizeof(x+b)=4
sizeof(x-1.9-1.6)=8
这是一篇满满的c语言的干货文(做题总结+数组指针部分笔记)!_第1张图片

任务二:
运行结果:
2
0 2
x=1,y=1,z=1
x=0,y=1,z=0
x=1,y=0,z=-1
x=0,y=0,z=-1
x=1,y=-1,z=-1
!
这是一篇满满的c语言的干货文(做题总结+数组指针部分笔记)!_第2张图片

变量:内存中的一块空间
数组:内存中的一串连续的空间

数组的结构和基本要素
标识符:数组的名称,用于区分不同的数组
数组元素:向数组中存放的数据
元素下标:对数组元素进行编号
元素类型:数组元素的数据类型

数组只有一个名称 即标识符(用来表示数组的变量名)

指针(ptr):是一个值为内存地址的变量(或数据对象)

在头文件中,NULL被定义为常量
Int * ptr_num = NULL;
指针的初设值为空,表示指针不指向任何地址。
指针同样是一个变量,只不过该变量中存储的是李刚一个对象的内存地址
如果一个变量存储另一个对象的地址,则称该变量只想这个对象
指针变量可以复制,指针的指向在程序制行中可以改变
注:

  1. 指针变量的命名规则和其他变量的命名规则一样
  2. 指针不能与现有变量同名
  3. 指针可存放c语言中的任何基本数据类型、数组和其他所有高级数据结构的地址
  4. 若指针已声明为指向某种类型数据的地址,则它不能用于存储其他类型数据的地址
  5. 应为指针指定一个地址后,才能在语句中使用指针

数组与指针小结
数组名就是这块连续内存单元的首地址
Int num[50]; //num是数组名,也是数组的首地址
num的值与&num[0]的值是相同的
数组的第i+1个元素可表示为:
第i + 1个元素的地址:&num[i + 1]或num + i +1
第i + 1个元素的值:num[I + 1] 或 *(num + I + 1) *num++

1.指针是一个变量,存储另一个变量(对象)的内存地址。
2.指针的声明由基本类型、星号()和变量名组成
3.为指针赋值,赋值运算符右侧必须是一个地址。
如果是普通变量需要在前面加一个取址运算符&;
若果是另一个指针变量或者是一个数组,不需要加&运算符
4.运算符
用于返回指针指向的内存地址中存储的值
5.使用指针访问一维数组和二维数组的元素
6.指针和字符串

&取地址
根据地址取值 – 顺藤摸瓜
指针不可以赋常量
num[i] 
(num + i)

num[i][j]
((num + i) + j)

循环结构
#include
int main()
{
int i, a, b;
for(i = 0; i <= 9; i++)
{
a = a + b;
b = a + b;
printf("%d\t%d\t “,a, b);
if((i + 1) % 2 == 0)printf(”\n");
}
}
这是一篇满满的c语言的干货文(做题总结+数组指针部分笔记)!_第3张图片
对于一个这样的很简单的问题,如果不输入 a和b的初始值,那么,它的运行结果会是:
这是一篇满满的c语言的干货文(做题总结+数组指针部分笔记)!_第4张图片

正确的操作应该是这样:
这是一篇满满的c语言的干货文(做题总结+数组指针部分笔记)!_第5张图片

我想来一个9*9乘法表,结果是这样:这是个bug
这是一篇满满的c语言的干货文(做题总结+数组指针部分笔记)!_第6张图片

我修改了一下j <= I,结果有了不一样的答案。
这是一篇满满的c语言的干货文(做题总结+数组指针部分笔记)!_第7张图片

所以,一定要注意细节!

你可能感兴趣的:(C语言学习笔记)