網站首頁 編程語言 正文
1. 指針數組定義方法
格式:
類型說明符 *數組名[ 元素個數 ]
int *p[10]; // 定義了一個整型指針數組p,有10個元素,都是int *類型的變量
指針數組的分類: 同指針類型的分類,見上一篇
大多數情況下,指針數組都用來保存多個字符串。
#include <stdio.h> int main() { char *name[5] = {"Hello", "Pig", "Pk", "Welcome", "DJANGo"}; int i; for (i = 0; i < 5; i++) { printf("%s\n", name[i]); } return 0; }
2. 指針的指針(二級指針)
指針的指針,即指針的地址
int main() { int a = 100; //定義一個一級指針,用于保存變量的地址 int *p = &a; //定義一個二級指針,用于保存一級指針的地址 int **q = &p; printf("a = %d %d %d\n", a, *p, **q); printf("&a = %p %p %p\n", &a, p, *q); // 打印a的地址 return 0; }
3. 字符串和指針
字符串的概念:以 ‘\0’ 結尾的若干字符的集合
字符串的存儲形式:數組,字符串指針,堆
(1) char string[100] = “I LOVE C”
定義了一個字符數組string用來存放字符串
(2) char *str = “I LOVE C”
定義了一個指針變量str,只能存放字符地址編號,所以說I LOVE C這個字符串中的字符不能存放在str指針變量中。str只是存放了字符 I 的地址編號,I LOVE C 存放在文字常量區
(3)char str=(char)malloc(10*sizeof(char));
動態申請了10個字節的存儲空間,首地址給str賦值。strcpy(str,“I LOVE C!”);
?將字符串拷貝到str指向的內存里。 《strcpy()函數詳解》
用的最多的是(1)和(3)
總結:
字符數組:在內存(棧、靜態全局區)中開辟了一段空間存放字符串
字符串指針:在文字常量區開辟了一段空間存放字符串,將字符串的首地址賦給str
堆:使用malloc函數在堆區申請空間,將字符串拷貝到堆區
4. 數組指針
本身是一個指針,指向一個數組,加1跳一個數組,即指向下一個數組。
數組指針的作用就是可以保存二維數組的首地址。
定義方法
格式:
指向的數組的類型 (*指針變量名)[ 指向的數組的元素個數 ]
int (*p)[5]; //定義了一個數組指針變量p,p指向的是整型的有5個元素的數組
p+1 往下指5個整型,跳過一個有5個整型元素的數組。
#include <stdio.h> // 定義數組指針 void test1() { int a[3][5]; // 定義一個3行5列的數組 int(*p)[5]; // 定義了一個數組指針變量p,p+1跳一個有5個元素的整型數組 printf("a=%p\n", a); // 第0行的行地址 printf("a+1=%p\n", a + 1); // 第1行的行地址,a和a+1差20個字節 p = a; printf("p=%p\n", p); printf("p+1=%p\n", p + 1); return; } int main() { test1(); return 0; }
數組指針的用法
#include <stdio.h> // 數組指針的用法:可以將二維數組的首地址傳到另一個函數里面,此時函數的形參需要定義為數組指針 void func(int (*p)[5], int x, int y) { p[x][y] = 101; } void test2() { int i, j; int a[3][5]; func(a, 0, 1); for (i = 0; i < 3; i++) { for (j = 0; j < 5; j++) { printf("%d ", a[i][j]); } printf("\n"); } } int main() { test2(); return 0; }
原文鏈接:https://blog.csdn.net/weixin_45231460/article/details/124650588
相關推薦
- 2022-07-23 詳解Nginx的超時keeplive_timeout配置步驟_nginx
- 2024-01-15 IDEA 常量字符串過長問題
- 2021-12-14 go調用shell命令兩種方式實現(有無返回值)_Golang
- 2022-04-12 GitHub_git push出現[rejected] master -> master (non-
- 2022-09-09 Qt?QFtp客戶端實現上傳下載文件_C 語言
- 2022-02-19 成功解決ParserError: Error tokenizing data. C error: E
- 2023-01-15 關于networkx返回圖的鄰接矩陣問題_python
- 2022-12-27 python如何查找圖片按鈕的坐標位置_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支