当前位置:网站首页>基礎不牢地動山搖之牛客刷題《二》
基礎不牢地動山搖之牛客刷題《二》
2022-07-22 08:41:00 【沙漠下的胡楊】
個人主頁:歡迎大家光臨——>沙漠下的胡楊
各比特大帥哥,大漂亮
如果覺得文章對自己有幫助
可以一鍵三連支持博主
你的每一分關心都是我堅持的動力
![]()
:本期重點:牛客刷題《二》
希望大家每天都心情愉悅的學習工作。
牛客刷題
一.實參和形參
二.空指針是什麼呢?
三.const修飾變量
四.負數取模
五.全局變量和改變循環條件的影響
六.逗號錶達式
七:sizeof和數組名以及 數組和指針的關系
一.實參和形參
看一下代碼,輸出結果為什麼呢?
void fun(char* p) { p = p + 1; } int main() { char a[] = { '1', '2', '3', '4' }; fun(a); printf("%c\n", *a); return 0; }
首先分析下:
其中p是臨時變量,改變p不會改變a的內容的。
看下示意圖:
![]()
![]()
我們可以看出,p的值發生改變啦,但是a的內容是沒有改變的,這是一個典型的形參和實參關系的代碼,其中可以進一步觀看棧幀的形成來理解——》函數棧幀
二.空指針是什麼呢?
空指針是什麼呢?下面哪一個是正確的呢?
我們來看圖:
這個圖我知道了,NULL其實就是0地址的空間。
這個值我們不能調用,不能直接使用。
其實NULL本質上是把 0 强制轉化為 void *後定義的值。
我們這樣進行寫,也是可以的(非常不建議):
是沒有警告的,這樣賦值也沒錯(非常不建議)。
三.const修飾變量
const修飾變量:
int b; (1)const int *a = &b; (2)int const *a = &b; (3)int *const a = &b;
下面那兩個代碼一樣呢?
首先我們看下是關於const知識點的,const修飾變量時,就看是在 * (解引用)前還是後,如果在前,就是修飾變量的值不可直接改變,可以通過一級指針間接改變。
如果在後,就是修飾變量的地址不可直接改變,可以通過二級指針改變。
詳情見————》const講解
四.負數取模
我們看個比較新鮮的,負數取模問題
int main() { int a = 5, b = -5; printf("%d,%d", a % (-4), b % (-4)); }
推薦大家先閱讀下這篇文章 ——》負數取模詳解
不然下面的概念就不太清楚啦~
下面我們先看下 5 %(-4)可能是什麼呢?
商是 -1.25,怎麼取整呢?在C語言是0向取整,所以商是-1,那麼餘數也就是-1啦。
同理看下 (-5)%(-4)呢?
商是1.25,C語言默認 0 向取整,所以商為1,那麼餘數就是 1 啦。
五.全局變量和改變循環條件的影響
看個代碼,輸出結果是什麼:
#include <stdio.h> int i; void prt() { for (i = 5; i < 8; i++) printf("%c", '*'); printf("\t"); } main() { for (i = 5; i <= 8; i++) prt(); }
我們一點點分析,首先 i 是全局變量,第一次循環,進入 prt 函數中 i = 5,然後再函數中進行打印 *號,出函數時 i 變為 8 了,在進行 i++,就變成 9 啦,結束main函數。
我們接著看圖吧:
六.逗號錶達式
我們看下逗號錶達式的東西吧~!
首先逗號錶達式是:
逗號錶達式,是c語言中的逗號運算符,優先級別最低,它將兩個及其以上的式子聯接起來,從左往右逐個計算錶達式,整個錶達式的值為最後一個錶達式的值。
第一:首先x = y = 8,然後x+y沒有賦值, x+1就是9。
第二和第一是一樣的。
第三:x = 8,然後x +1還沒有賦值,y = 8,此時x+y 為 18。
第四:y = 8,y+1沒有賦值,x = y = 8,然後 x + 1 為 9 。
七:sizeof和數組名以及 數組和指針的關系
看個代碼,函數返回結果是什麼?
struct TEST_TYPE { int a; int b; }; int testSize(struct TEST_TYPE val[10]) { return sizeof(val); }
我們可以看出,是先創建一個結構體,然後我們傳的參數是一個結構體數組,然後我們這裏用sizeof計算數組的大小,理論上應該為40,但是結果為4,為什麼呢?
這裏給大家推薦一篇詳解 數組和指針關系的文章 ——》指針和數組的親密關系
雖然我們在這裏用的是數組傳參,其實上實際上 val 已經是一個指針啦,我們計算的是指針大小,當然是 4 個字節啦。
边栏推荐
- SPI调试不成功很有可能是你线接错了!!
- excel 如何根据身份证号自动匹配性别代码
- 使用 SUM 函数对区域中的数字求和
- Location Cache 模块浅析及 OCP 监控、报警详解
- 房屋排序法
- STM32 Hal library SPI always reads FF. Solve the problem!
- 一个交易系统需要经过几年的考验才算成功的交易系统,盈利需要几年才算稳定?
- STM32 SPI reading data is inaccurate, only the first time is correct, and the latter is not correct
- Redis的经典三问以及哨兵
- Shell exercise: Statistics of word frequency
猜你喜欢
Self study golang [Chapter 1: basic knowledge of go language] Why do you want to learn go language? The relationship between go language and C language? Founder of go language? What are the characteri
In Excel, the shortcut key of "insert cut cell"
不断提升认知,从而达到交易的最高级别——稳定盈利(一)
Verilog - 74lvc161 counter
解释内存中的栈(stack)、堆(heap)和方法区(method area)的用法
The difference between RDB and AOF in the persistence mode of redis
量化交易中通过均线系统判断上涨(下跌)动能减弱
RPA是什么?推荐让电商运营10倍提效的自动化工具
IDEA 如何自动导入(import)
一个交易系统需要经过几年的考验才算成功的交易系统,盈利需要几年才算稳定?
随机推荐
Self study golang [3.4go language functions and pointers] define a function that returns one or more values. For the pointer of go language, the pointer cannot operate. For the parameter transmission
自学golang【3.8使用go语言实现寻找最长不含有重复字符的子串】练习代码
Read and write file contents
编写第一个myshell程序(上机实验报告二)
RPA是什么?推荐让电商运营10倍提效的自动化工具
硬件看门狗的实现
pytorch如何将Variable或Tensor转换为numpy?
Self study golang [Chapter 3: the first go language program] use GoLand to create the first go program, the main function and init function, and use go to run Windows commands and realize the data out
自学golang【3.5go语言数组,range关键字】数组的定义方式,使用for循环遍历一维数组
不断提升认知,从而达到交易的最高级别——稳定盈利(终)
What is RPA? Recommend automated tools that allow e-commerce operators to operate 10 times more efficiently
pytorch学习(一):线性回归
How does pytorch convert a variable or tensor to numpy?
MySQL binlog
存储容量与地址空间的计算
p[0]作为for循环的判断条件
STM32 SPI 读取数据不准确,只有第一次对,后边均不对
Self study golang [3.3go language loop statement] for loop syntax structure, omit initial conditions, omit incremental conditions, omit the application of end conditions
量化交易中通过均线系统判断上涨(下跌)动能减弱
September memo