1. 程式人生 > >Linux C學習第十一天

Linux C學習第十一天

一、二維陣列
二維陣列實際上就是一維陣列,陣列中每個元素都是一維陣列
a[2] == &a[2][0]
a[0] == &a[0][0]
a == &a[0] =====> int (*pa)[4] = a
二維陣列的初始化可以按行分段賦值,也可按行連續賦值。
例如對陣列a[5][3]
按行分段賦值可寫為:
int a[5][3]={ {80,75,92}, {61,65,71}, {59,63,70}, {85,87,90}, {76,77,85} };
按行連續賦值可寫為:
int a[5][3]={80, 75, 92, 61, 65, 71, 59, 63, 70, 85, 87, 90, 76, 77, 85};
可以只對部分元素賦初值,未賦初值的元素自動取0值
int a[3][3]={{1},{2},{3}};
是對每一行的第一列元素賦值,未賦值的元素取0值。 賦值後各元素的值為:
1 0 0
2 0 0
3 0 0
如對全部元素賦初值,則第一維的長度可以不給出
int a[3][3]={1,2,3,4,5,6,7,8,9};
可以寫為:
int a[][3]={1,2,3,4,5,6,7,8,9};
二、字元陣列
1.定義方式
char a[10]; // 一維字元陣列
char b[5][10]; // 二維字元陣列
字元陣列實際上是一系列字元的集合,也就是字串(String)。在C語言中,沒有專門的字串變數,沒有string型別,通常就用一個字元陣列來存放一個字串。
字元陣列初始化
2.普通陣列的初始化方式對字元陣列同樣適用
char str[30] = {0}; // 全部初始化為0
char str[30] = {‘h’, ‘e’, ‘l’, ‘l’, ‘o’}; // 部分初始化

**可以將字串直接賦值給字元陣列**

char str[30] = {“helloworld”};
char str[30] = “helloworld”; //這種形式更加簡潔,實際開發中常用
注意
C語言中,字串總是以’\0’作為串的結束符。上面的兩個字串,編譯器已經在末尾自動新增
了’\0’。’\0’是ASCII碼錶中的第0個字元,用NULL表示,稱為空字元。該字元既不能顯示,也不是控制字元,輸出該字元不會有任何效果,它在C語言中僅作為字串的結束標誌。

字串的輸入輸出
printf 在輸出字串時會逐個掃描字元,直到遇見 ‘\0’ 才結束輸出
printf 用 %s 輸出字串
char str1[30] = “hello”;
char str2[] = “abcdef”;
char str3[30] = “You are a good\0 boy!”;
printf(“str1: %s\n”, str1);
printf(“str2: %s\n”, str2);
printf(“str3: %s\n”, str3);

練習:
• 求二維陣列的行列和,先輸出每一行的值,再輸出每一列的值

#include <stdio.h>
//求陣列行列和
int main()
{
	int a[3][4];
	int i,j;
	int sumh=0;
	int suml=0;
	for(i=0;i<3;i++)
	{
		sumh=0;
		for(j=0;j<4;j++)
		{
			a[i][j]=i*4+j+1;
			sumh+=a[i][j];
			
		
		}
		printf("sum di %dhang = %d\n",i,sumh);
	}
	for(j=0;j<4;j++)
	{
		suml=0;
		for(i=0;i<3;i++)
		{
			suml+=a[i][j];
		}
		printf("sum di %dlie= %d\n",j,suml);
	}
	
	return 0;
}