国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - C語言 array數組的用法詳解

C語言 array數組的用法詳解

2022-02-12 17:07Dark And Grey C/C++

數組是指一組數據的集合,(容器)數組中的每個數據稱為元素。在Java中,數組也是Java對象。數組中的元素可以是任意類型(包括基本類型和引用類),但同一個數組里只能存放類型相同的元素

一維數組的創建與初始化

數組是一種相同類型元素的集合

程序一:

#include<stdio.h>
#include<string.h>
int main()
{
創建一個數組
int arr1[10];//  [常量]
初始化 int arr[10]={1,2,3};不完全初始化,剩下的元素默認初始化0.
char arr2[5];
初始化 char arr[5]={'a','b'};,不完全初始化,剩下元素默認初始化0.
初始化 char arr[5]="ab" 這是可行的,因為隱藏一個'\0',后面的0使我們自己給的(這個字符串都給給它的==),不是系統默認



int n = 5;
char ch[n]; 這樣創建數組是錯誤,因為n還是變量,值是被賦值了,并不會改變它的屬性
char arr3[5] = { 'a', 98/*b的ASCII碼等于98*/ };//可行
上式等價于下式
char arr3[5] = {'a','b'}




char arr4[] = "abcd";//加上后面隱藏的'\0',大小為5
當我們并沒有指定大小的時候,它會根據后面的數據,自己給定大小

  char  arr5[] = "abcdef";
  printf("%d\n",sizeof(arr5));// 7 sizeof暈倒'\0',把它算進去,在停止計算
  printf("%d\n", strlen(arr5));//6 strlen是遇到'\0'(不包含),就停止計算
  
  char arr6[] = { 'a', 'b','c','\0' };
  printf("%d\n",strlen(arr6));//如果沒有'\0'結束標志符,它會一直算個數,直到遇到'\0',輸出的是一個隨機數
  printf("%d\n", sizeof(arr6));//沒有'\0'它就少算一個就是3
  return 0;
}

程序二:

#include<stdio.h>
#include<string.h>
int main()
{
  char arr[] = "abcdef";//元素下標是從0開始
  pritnf("%c\n",arr[0]); //arr[0] == a,表示首元素a,輸出結果為a

  如果要依次打印字符串所有元素用循環更簡單,字符串的 '\0' 是隱藏的,一般是不用打印的
  int i = 0;
  int len = strlen(arr);// 計算元素個數
  for (i = 0; i < len; i++)
  {
      printf("%c ",arr[i]);// a b c d e f
  }

  return 0;
}

程序三

#include<stdio.h>
int main()
{
  int arr[] = {1,2,3,4,5,6,7,8,9,10};
  int sz = sizeof(arr) / sizeof(arr[0]);
  // sizeof(數組名)計算的整個數組的字節大小,我們只要再求一個元素的大小就可以了,因為 數組是一群相同類型數據的集合,所以我
  // 假設 int a[10]; 數組 a 有 10個 int(4byte) 類型的元素,整個數組的大小就是 4*10 == 40 byte, 數組大小除以數組元素大小,不就是數組元素個數嘛。(40/4 == 10)
  
  int i = 0;
  for (i = 0; i < sz; i++)
  {
      printf("%d ",arr[i]);
      printf("&arr[%d]=%p\n",i,&arr[i]);// 打印 數組對應下標元素的地址
  }
  
  return 0;
}

程序四(二維數組 - 二維數組 的 列 絕對不能 省略 )

#include<stdio.h>
int main()
{
  ///int arr[3][4];//存儲一個三行四列的數據 3是行(3個一維數組),4是列
int arr1[3][4] = {1,2,3,4,5};
假設 數據 是這樣存的,在內存是連續存儲的12345000.....
1234 
5000 
0000

int arr2[3][4] = {  { 1, 2, 3 } , { 4, 5 }   };
1 2 3 0                      
4 5 0 0
0 0 0 0
一行的數據 是根據元素加個后面的{ },方便你們去區分,再根據列數確定 一行有多少個元素

int arr3[][4] = { { 1, 2, 3 }, { 4, 5 } };
1 2 3 0
4 5 0 0
二維數組不管行還是列,下標都是從0開始,而且 二維數組的 行 是可以省略的,它會根據 元素 和 列的值,來確定行數

  int arr4[3][4] = { { 1, 2, 3 }, { 4, 5 } };
  int i = 0;
  for (i = 0; i < 3; i++)
  {
      int j = 0;
      for (j = 0; j < 4; j++)
      {
          printf("%d ",arr4[i][j]);1 2 3 0 
                                   4 5 0 0
                                   0 0 0 0
      }
      printf("\n");
  }
  return 0;
}

 

二維數組在內存中的存儲

在內存中實際存儲情況,第一行完了,第二行緊跟在第一行,第三行緊跟在第二行,int a[2][2]={1,2,3,4}, 在內存中存儲情況為 1 2 3 4 (小端)
因為 數組的首元素地址是最小的,后面元素,地址依次增大(大約增大 一個元素的類型的字節大小)

程序一

#include<stdio.h>
int main()
{
  int arr[3][4] = { { 1, 2, 3 }, { 4, 5 } };
  int i = 0;
  for (i = 0; i < 3; i++)
  {
      int j = 0;
      for (j = 0; j < 4; j++)
      {
          printf("arr[%d][%d]=%p\n", i, j, &arr[i][j]);
          arr[0][3]和arr[1][0]地址相差4,二維數組與一維數組一樣,都連續存儲
      }
  }
  return 0;
}

C語言 array數組的用法詳解

 

數組作為函數參數,怎么作?

實例:冒泡排序

#include<stdio.h>
void bubble_sort(int arr[],int sz)
{
  
  確定冒號排序的趟數
  int i = 0;
  for (i = 0; i < sz - 1; i++)// 排序要排 元素總個數-1,最后一個元素不用排
  {
      int flag = 1;//假設這一趟的數據已經有序
     
      int j = 0;
      for (j = 0; j < sz-1-i; j++)//  每一趟冒號排序的過程
      {
          if (arr[j] > arr[j + 1])
          {
              int tmp = arr[j];
              arr[j] = arr[j + 1];
              arr[j + 1] = tmp;
              flag = 0;//本趟排序的數據不完全有序
          }
      }
      if (1 == flag)
      {
          break;
      }
  }
}
int main()
{
  int arr[] = { 0, 8, 7, 6, 5, 4, 3, 2, 1, 9 };
  int i = 0;
  int sz = sizeof(arr) / sizeof(arr[0]);
  bubble_sort(arr,sz);
  對數組arr進行傳參,傳遞的是數組arr首元素的地址
  for (i = 0; i < sz; i++)
  {
      printf("%d ",arr[i]);//0,1,2,3,4,5,6,7,8,9
  }
  return 0;
}

 

數組名:

#include<stdio.h>
int main()
{
	int arr[] = { 1, 2, 3, 4, 5, 6, 7 };//數組隨著下標的增長,地址是由低到高變化點

	printf("%p\n",arr);
	數組名就是數組首元素地址,是一樣的。見附圖1
	printf("%p\n",&arr[0]);


	但有兩個意外

	1.sizeof(數組名) - 數組名表示整個數組 ,計算的是整個數組的大小,單位為字節(byte)
	int sz = sizeof(arr); 
	printf("%d\n",sz);// 4(元素大小)* 7(元素個數)== 28,效果見附圖 2


	2.&(數組名),數組名代表整個數組,&數組名,取的是整個數組的地址
	printf("%p\n", &arr);//表示數組的起始地址,是整個數組的地址
	上下兩者的值一樣,但 意義完全不同,效果圖 見附圖 3
	printf("%p\n", arr);//首元素的地址

  //進一步論證  &arr 和 arr的意義完全不同,不同在哪里
  printf("%p\n", &arr+1);//地址增加28字節,一個元素4byte,7個元素28字節,意味著 &arr + 1 跳過一整個數組的元素,指向最后一個元素后面的地址
  printf("%p\n", arr+1);//地址增加4字節,意味著 arr +1,跳過一個元素,改地址 arr+1,指向第二個元素
  效果見附圖 4
  return 0;
}

關于數組名,有興趣的,可以看看我這篇文章指針和數組試題解析(重置版)

附圖1;

C語言 array數組的用法詳解

附圖2:

C語言 array數組的用法詳解

附圖3:

C語言 array數組的用法詳解

附圖4:

C語言 array數組的用法詳解

本文結束

到此這篇關于C語言 array數組的用法詳解的文章就介紹到這了,更多相關C語言 array數組內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/DarkAndGrey/article/details/120606396

延伸 · 閱讀

精彩推薦
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
主站蜘蛛池模板: 黄色电影免费在线观看 | 在线天堂v | 国产成人免费在线 | 在线中文视频 | 亚洲精品久久久久久久久久久 | 精品中文字幕在线 | 操操网站 | 欧美成人一区二免费视频软件 | 久久久综合视频 | 午夜精品视频在线观看 | 久久久久久久免费 | 91精品国产一区二区 | 久久久久99 | 狠狠干美女 | 亚洲最大的黄色网 | 欧美激情视频一区二区三区在线播放 | 在线观看黄 | www.avtt天堂网| 国产韩国精品一区二区三区 | 亚洲男人第一天堂 | 亚洲日本乱码在线观看 | 国产午夜小视频 | 亚洲经典一区 | 国产精品不卡视频 | 免费日韩在线 | 亚洲视频一区二区三区 | 久久久久国产精品免费免费搜索 | 国产精品免费一区二区三区 | 91视频观看 | 欧美久久久久久久久久久久久久 | 日本淫片 | 国产日本韩国在线 | 精品久 | 香蕉av在线 | 自拍第1页 | 四季久久免费一区二区三区四区 | 免费不卡视频 | 亚洲综合久久久 | 欧美日韩精品 | 国产精品69毛片高清亚洲 | 欧美性猛片aaaaaaa做受 |