Linux C語言基礎 day10

目錄

學習目標:

學習內容:

1.指針指向數組

1.1?指針與數組的關系

1.2?指針與一維數組關系實現

1.2.1?指針與一維數組的關系

1.2.2? 指針指向一維整型數組作為函數參數傳遞

課外作業:


學習目標:

  • 一周掌握 C基礎知識

學習內容:

1.指針指向數組

1.1?指針與數組的關系

????????1. 一維數組的數組名,本質上是一個該數組的第一個元素的地址

????????????????int arr[5]; arr &arr[0]

????????2.?數組名是一個地址常量,不能被重新賦值,但是,數組名可以進行偏移

????????3.? 二維數組的數組名,從數值上來說也是一個該數組第一個元素的地址

????????????????int arr[3][4]; arr <==> &arr[0]; arr[0] <==>&arr[0][0]; arr[1] <==>&arr[1][0]

1.2?指針與一維數組關系實現

1.2.1?指針與一維數組的關系

#include<stdio.h>int main(int argc, const char *argv[]){//定義一個一維數組int arr[] = {3,8,3,2,4};int len = sizeof(arr)/sizeof(arr[0]); ? ?//求數組長度//定義指針指向一維數組int *ptr = arr; ? ? ? ? ? ? //int *ptr = &arr[0];//數據輸出方式1,從值的角度printf("數據元素分別是:");for(int i=0; i<len; i++){printf("%d\t", arr[i]);}printf("\n");//輸出方式2:從數組名的角度printf("數據元素分別是:");for(int i=0; i<len; i++){printf("%d\t", *(arr+i) );}printf("\n");//輸出方式3:從指針變量的角度printf("數據元素分別是:");for(int i=0; i<len; i++){printf("%d\t", *(ptr+i) );}printf("\n");//輸出方式4:從指針的角度找值printf("數據元素分別是:");for(int i=0; i<len; i++){printf("%d\t", ptr[i]);}printf("\n");//輸出方式5:從指針變量的角度printf("數據元素分別是:");for(int i=0; i<len; i++){printf("%d\t", *(ptr++));}printf("\n");return 0;}

1.2.2? 指針指向一維整型數組作為函數參數傳遞

????????當實參使用的是數組名進行傳遞時,本質上傳遞的是數組首元素的地址

????????被調函數的形參可以是一個數組接收,也可以是一個指針變量接收

????????雖然使用的是數組接收,但是,本質上也還是使用的是指針接收

例如:主函數中定義一個長度為8的數組,調用自定義函數完成輸入、自定義函數完成輸出、自定義函數求最大值、自定義函數完成數組的逆置。并對這些函數進行測試。要求,形參使用指針接收

#include <stdio.h>#define MAX 8// 函數聲明void inputArray(int *arr, int length);void outputArray(const int *arr, int length);int findMaxValue(const int *arr, int length);void reverseArray(int *arr, int length);int main() {int arr[MAX];printf("請輸入%d個整數:\n", MAX);inputArray(arr, MAX); // 輸入數組printf("輸入的數組為:\n");outputArray(arr, MAX); // 輸出數組int maxVal = findMaxValue(arr, MAX); // 求最大值printf("數組中的最大值是:%d\n", maxVal);reverseArray(arr, MAX); // 逆置數組printf("逆置后的數組為:\n");outputArray(arr, MAX); // 輸出逆置后的數組return 0;}// 輸入數組元素void inputArray(int *arr, int length) {for (int i = 0; i < length; i++) {scanf("%d", arr + i);}}// 輸出數組元素void outputArray(const int *arr, int length) {for (int i = 0; i < length; i++) {printf("%d ", arr[i]);}printf("\n");}// 求數組的最大值int findMaxValue(const int *arr, int length) {int max = arr[0];for (int i = 1; i < length; i++) {if (arr[i] > max) {max = arr[i];}}return max;}// 逆置數組void reverseArray(int *arr, int length) {for (int i = 0; i < length / 2; i++) {int temp = arr[i];arr[i] = arr[length - 1 - i];arr[length - 1 - i] = temp;}}


課外作業:

1.?自定義函數(my_strlen)實現strlen函數的功能

解析:

#include<stdio.h>
#include<string.h>
#define MAX 50
void my_strlen(char *a,int count){printf("請輸入字符串:");gets(a);while (*a++){count++;}printf("長度為%d\n",count);
}int main(int argc, char const *argv[])
{char str[MAX]="";char s[MAX]="";int count=0;my_strlen(str,count);return 0;
}


?

2.?自定義函數(my_strcpy)實現strcpy函數的功能

解析:

#include<stdio.h>
#include<string.h>
#define MAX 50void my_strcpy(char *a,const char *b){while (*b != '\0'){*a=*b;? ? ? ? //將b里的值寫入aa++;b++;}*a='\0';? ? ? //‘\0’寫入a}
int main(int argc, char const *argv[])
{char str[MAX]="";char s[MAX]="";int count=0;printf("請輸入第一個字符串內容");gets(str);printf("請輸入第二個字符串內容");gets(s);my_strcpy(str,s);? ? ? ? //調用函數printf("str=%s\t,s=%s\t",str,s);return 0;
}


?

3.自定義函數(my_strcmp)實現strcmp函數的功能

解析:

#include<stdio.h>
#include<string.h>
#define MAX 50int my_strcmp(const? char *a,const char *b){
int len = sizeof(*b)/sizeof(char);while (*a ?&& *b){a++;b++;}return (char) *a -(char) *b;}
int main(int argc, char const *argv[])
{char str[MAX]="";char s[MAX]="";int count=0;printf("請輸入第一個字符串內容");gets(str);printf("請輸入第二個字符串內容");gets(s);int sum = my_strcmp(str,s);if(sum ==0){printf("相等");}else if (sum <0){printf("第二個字符串內容大");}else{printf("第一個字符串內容大");}return 0;
}

4.自定義函數(my_strcat)實現strcat函數的功能

解析:

#include<stdio.h>
#include<string.h>
#define MAX 50void my_strcat(char *a,const char *b){while (*a != '\0'){a++;}while (*b != '\0'){*a++ = *b++;}*a = '\0';
}
int main(int argc, char const *argv[])
{char str[MAX]="";char s[MAX]="";int count=0;printf("請輸入第一個字符串內容");gets(str);printf("請輸入第二個字符串內容");gets(s);my_strcat(str,s);printf("str=%s\n",str);return 0;
}

5.自定義函數(my_strstr)實現求src字符串中是否包含子串dest字符串

解析:

#include <stdio.h>// 自定義函數 my_strstr,實現 strstr 函數的功能
char ?my_strstr(const char *src, const char *dest) {int src_len = 0, dest_len = 0;const char *src_ptr, *dest_ptr;// 計算 dest 字符串的長度while (dest[dest_len] != '\0') {dest_len++;}// 遍歷 src 字符串for (src_ptr = src; *src_ptr != '\0'; src_ptr++) {// 如果當前字符匹配 dest 的第一個字符if (*src_ptr == *dest) {int i = 0;// 檢查 dest 是否完全匹配for (i = 0; i < dest_len; i++) {// 如果字符不匹配或到達 src 的末尾,則跳出循環if (src_ptr[i] != dest[i] || src_ptr[i] == '\0') {break;}}// 如果完全匹配,返回1if (i == dest_len) {return 1;}}}// 如果沒有找到 dest,返回 0return 0;
}int main() {char str[50]="";char s[50]="";printf("請輸入第一個字符串內容");gets(str);printf("請輸入第二個字符串內容");gets(s);// 使用自定義函數查找子串char found = my_strstr(str, s);if (found != 0) {printf("找到子串\n" );} else {printf("子串未找到。\n");}return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/45553.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45553.shtml
英文地址,請注明出處:http://en.pswp.cn/web/45553.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

卡碼網語言基礎課 | 10. 平均績點

目錄 1、問題描述2、知識點① 字符串格式化輸出② 保留小數 3、代碼 1、問題描述 題目描述&#xff1a;每門課的成績分為A、B、C、D、F五個等級&#xff0c;為了計算平均績點&#xff0c;規定A、B、C、D、F分別代表4分、3分、2分、1分、0分。 輸入描述&#xff1a;有多組測試…

RandomAccessFile詳細總結

RandomAccessFile 是 Java 中一個非常特殊的類&#xff0c;它既可以用來讀取文件&#xff0c;也可以用來寫入文件。與其他 IO 類&#xff08;如 FileInputStream 和 FileOutputStream&#xff09;不同&#xff0c;RandomAccessFile 允許您跳轉到文件的任何位置&#xff0c;從那…

【全面介紹Pip換源】

&#x1f3a5;博主&#xff1a;程序員不想YY啊 &#x1f4ab;CSDN優質創作者&#xff0c;CSDN實力新星&#xff0c;CSDN博客專家 &#x1f917;點贊&#x1f388;收藏?再看&#x1f4ab;養成習慣 ?希望本文對您有所裨益&#xff0c;如有不足之處&#xff0c;歡迎在評論區提出…

CV11_模型部署pytorch轉ONNX

如果自己的模型中的一些算子&#xff0c;ONNX內部沒有&#xff0c;那么需要自己去實現。 1.1 配置環境 安裝ONNX pip install onnx -i https://pypi.tuna.tsinghua.edu.cn/simple 安裝推理引擎ONNX Runtime pip install onnxruntime -i https://pypi.tuna.tsinghua.edu.cn/si…

基于Java的斗地主游戲案例開發(做牌、洗牌、發牌、看牌

package Game;import java.util.ArrayList; import java.util.Collections;public class PokerGame01 {//牌盒//?3 ?3static ArrayList<String> list new ArrayList<>();//靜態代碼塊//特點&#xff1a;隨著類的加載而在加載的&#xff0c;而且只執行一次。stat…

底軟驅動 | C++內存相關

文章目錄 C內存相關C內存分區C對象的成員函數存放在內存哪里 堆和棧的區別堆和棧的訪問效率“野指針”有了malloc/free為什么還要new/deletealloca內存崩潰C內存泄漏的幾種情況內存對齊柔性數組參考推薦閱讀 C內存相關 本篇介紹了 C 內存相關的知識。 C內存分區 在C中&#…

力扣第八題——字符串轉換整數

題目介紹 請你來實現一個 myAtoi(string s) 函數&#xff0c;使其能將字符串轉換成一個 32 位有符號整數。 函數 myAtoi(string s) 的算法如下&#xff1a; 空格&#xff1a;讀入字符串并丟棄無用的前導空格&#xff08;" "&#xff09;符號&#xff1a;檢查下一個字…

TCP重傳、滑動窗口、流量控制、擁塞控制機制

目錄 1、TCP重傳機制超時重傳快速重傳 2、滑動窗口3、流量控制4、擁塞控制1、慢啟動2、擁塞避免3、擁塞發生 1、TCP重傳機制 TCP 針對數據包丟失的情況&#xff0c;會用重傳機制解決。 超時重傳 就是在發送數據時&#xff0c;設定一個定時器&#xff0c;當超過指定的時間還沒…

Ctrl+C、Ctrl+V、Ctrl+X 和 Ctrl+Z 的起源

注&#xff1a;機翻&#xff0c;未校對。 The Origins of CtrlC, CtrlV, CtrlX, and CtrlZ Explained We use them dozens of times a day: The CtrlZ, CtrlX, CtrlC, and CtrlV shortcuts that trigger Undo, Cut, Copy, and Paste. But where did they come from, and why do…

文件上傳接口

文章目錄 開發前端接口 開發前端接口 首先這個前端的文件上傳組件使用了,前端組件 首先這個接口不是一般的接口,這個接口可以提取出來,之后那里使用了,就直接放到哪里 所以這是一個萬能文件上傳接口 寫完之后選擇 頭像組件 在圖庫中添加組件 寫前端組件之后,寫了前端的組件…

Bootstrap 5 加載效果

Bootstrap 5 加載效果 Bootstrap 5 是一個流行的前端框架,它提供了豐富的組件和工具,用于快速開發響應式和移動優先的網頁。在本文中,我們將探討 Bootstrap 5 中的加載效果,包括如何實現它們以及它們在網頁設計中的作用。 什么是加載效果? 加載效果是在網頁或應用程序中…

k8s集群創建devops項目一直等待狀態,沒有發現host

問題分析&#xff1a; kubesphere在幫我們自動化創建一些智能自動化的額時候難免會發生一些小錯誤&#xff0c;devops-jenkins是一個部署也會生成一個容器組即pod&#xff0c;容器組的容器服務端口是 targetPort&#xff0c;容器組對外暴露的端口是port&#xff0c;拿devops-c…

[深度學習]基于yolov10+streamlit目標檢測演示系統設計

YOLOv10結合Streamlit構建的目標檢測系統&#xff0c;不僅極大地增強了實時目標識別的能力&#xff0c;還通過其直觀的用戶界面實現了對圖片、視頻乃至攝像頭輸入的無縫支持。該系統利用YOLOv10的高效檢測算法&#xff0c;能夠快速準確地識別圖像中的多個對象&#xff0c;并標注…

Billu_b0x靶機

信息收集 使用arp-scan 生成網絡接口地址來查看ip 輸入命令&#xff1a; arp-scan -l 可以查看到我們的目標ip為192.168.187.153 nmap掃描端口開放 輸入命令&#xff1a; nmap -min-rate 10000 -p- 192.168.187.153 可以看到開放2個端口 nmap掃描端口信息 輸入命令&…

配置PYTHONPATH環境變量

配置PYTHONPATH環境變量 前言Win系統臨時配置永久配置 Linux系統臨時配置永久配置 前言 在運行py腳本時不僅需要import官方庫&#xff0c;經常會import自己編寫的腳本&#xff0c;但此時會出現模塊找不到的如下報錯。解決方法是配置PYTHONPATH&#xff0c;下文介紹Win系統和Li…

禹神:一小時快速上手Electron,前端Electron開發教程,筆記。一篇文章入門Electron

一、Electron是什么 簡單的一句話&#xff0c;就是用htmlcssjsnodejs&#xff08;Native Api&#xff09;做兼容多個系統&#xff08;Windows、Linux、Mac&#xff09;的軟件。 官網解釋如下(有點像繞口令)&#xff1a; Electron是一個使用 JavaScript、HTML 和 CSS 構建桌面…

Resources.Load返回null

Resources.Load返回null 在unity中Resources.Load從Assets下的任意Resources目錄下讀取資源&#xff0c;比如從Assets\Resources下讀取Cube&#xff08;預制體&#xff09;&#xff0c;當然也可以讀取其他資源 代碼為 GameObject prefab Resources.Load<GameObject>(…

微軟Edge瀏覽器深度解析:性能、安全性與特色功能全面評測

一、引言 自Windows 10操作系統推出以來&#xff0c;微軟Edge瀏覽器作為默認的網頁瀏覽器&#xff0c;憑借其現代化的設計和出色的性能表現&#xff0c;逐漸獲得了用戶的認可。本文旨在對Edge瀏覽器進行深入分析&#xff0c;探討其在多個方面的表現。 二、界面與操作體驗 界面…

在 PostgreSQL 里如何處理數據的存儲優化和數據庫備份的效率平衡?

&#x1f345;關注博主&#x1f397;? 帶你暢游技術世界&#xff0c;不錯過每一次成長機會&#xff01;&#x1f4da;領書&#xff1a;PostgreSQL 入門到精通.pdf 文章目錄 在 PostgreSQL 里如何處理數據的存儲優化和數據庫備份的效率平衡&#xff1f;一、數據存儲優化&#x…

HTML表格表單及框架標簽

一.表格標簽 1.<table></table> 創建表格 2.<caption></caption> 表格的標題 3.<tr></tr>Table Row&#xff08;表格行&#xff09; 4.<td></td>Table Data&#xff08;表格數據&#xff09;其中有屬性rowspan"2&quo…