1、字符串數組
多個字符串構成的集合
存儲方式
二維字符數組
字符指針數組
一次從鍵盤 輸入多個字符串是時,需要使用二維字符數組來接收
char str[5][5] = {"aaa","bbb","ccc","ddd","eee"};
char* str1[5] = {"aaa","bbb","ccc","ddd","eee"};
//從鍵盤輸入三個人的名字然後將其輸出
char name[3][100];
for (int i = 0; i < 3; i ++) {
NSLog(@"請輸入第%d個人的名字",i+1);
scanf("%s",name[i]);
}
NSLog(@"這三個人是:");
for (int i = 0; i < 3; i ++) {
printf("%s\n",name[i]);
}
2、預處理
在編譯之前對源程序進行的處理工作
import:將其後的.h文件包含進來
<>:直接到系統文件夾中找要包含的.h文件
“”:先到工程文件夾中找.h文件,如果沒有再到系統文件夾中找
宏:本質上是一種替換操作
無參宏,也叫作宏常量、宏指令
帶參宏,宏函數
帶參宏的使用注意事項
#import <Foundation/Foundation.h>
#define MIN(x,y)(x<y?x:y)
#define IS_ODD(x)(x%2!=0)
#define LOWER(ch)(ch>=65&&ch<90?ch+32:ch)
#define PRINT(a,b) printf(#a"=%d,"#b"=%d\n",a,b);
int main()
{
@autoreleasepool {
NSLog(@"%d",MIN(3,5));
if (IS_ODD(55)) {
NSLog(@"YES");
}
int a;
NSLog(@"請輸入一個整數");
scanf("%d",&a);
if (IS_ODD(a)) {
NSLog(@"YES");
}
else
NSLog(@"NO");
NSLog(@"%c",LOWER('D'));
PRINT(3,5);
}
return 0;
}
條件編譯指令
#import <Foundation/Foundation.h>
#define SQUARE(x) ((x)*(x))
#define SUM(x,y) ((x)+(y))
#define SWAP(T,x,y) {T (t) = (x);(x)=(y);(y)=(t);}
#define MAX(x,y) ((x)>(y)?(x):(y))
int main()
{
@autoreleasepool {
//宏函數中的參數一定要用括號括起來,以防止替換後的優先級問題
NSLog(@"%d",SQUARE(5));
NSLog(@"%d",SQUARE(2+3));
//宏函數中的整個表達式也需要用括號括起來,以防止替換後的優先級問題
NSLog(@"%d",SUM(1, 1));
NSLog(@"%d",SUM(2, 3)*5);
//宏函數中有多條語句時,應寫成複合語句,以防止變量重定義
int a = 10;
int b = 20;
NSLog(@"a = %d b = %d",a,b);
SWAP(int,a,b);
NSLog(@"a = %d b = %d",a,b);
a = 30;
b = 40;
SWAP(int, a, b);
NSLog(@"a = %d b = %d",a,b);
//調用宏函數時,不要用++、--作爲實參
a = 3;
b = 4;
NSLog(@"a = %d b = %d %d",a,b,MAX(++a,++b));
}
return 0;
}
#import <Foundation/Foundation.h>
#define DEBUG1 0
#define IA64
#define IA32
int main()
{
@autoreleasepool {
int sum = 0;
for (int i = 1; i <= 100; i ++) {
sum += i;
#if DEBUG1
NSLog(@"i = %d sum = %d",i,sum);
#endif
}
NSLog(@"sum = %d",sum);
#ifdef IA64
NSLog(@"系統是64位的");
#else
NSLog(@"系統是32位的");
#endif
#ifndef IA32
NSLog(@"系統是64位的");
#else
NSLog(@"系統是32位的");
#endif
#ifdef LLVM4
NSLog(@"LLVM4.0");
#elseif defined LLVM3
NSLog(@"LLVM3.0");
#elseif defined LLVM2
NSLog(@"LLVM2.0");
#endif
#undef IA32
#ifndef IA32
NSLog(@"系統是64位的");
#else
NSLog(@"系統是32位的");
#endif
}
return 0;
}
3、多文件編程
…
每日一練
用多文件(4個人)編程方式打印如下圖形
zhangsan:
#ifndef exe_zhangsan_h
#define exe_zhangsan_h
void printStar(int n);
#endif /* exe_zhangsan_h */
#import <Foundation/Foundation.h>
void printStar(int n)
{
for (int i = 0; i < n; i ++) {
printf("*");
}
}
lisi:
#ifndef exe_lisi_h
#define exe_lisi_h
void printSpace(int n);
#endif /* exe_lisi_h */
#import <Foundation/Foundation.h>
void printSpace(int n)
{
for (int i = 0; i < n; i ++) {
printf(" ");
}
}
wangwu:
#ifndef exe_wangwu_h
#define exe_wangwu_h
void Test1(int n);
#endif /* exe_wangwu_h */
#import <Foundation/Foundation.h>
#import "exe_zhangsan.h"
#import "exe_lisi.h"
void Test1(int n)
{
for (int k = n; k >= 1; k--) {
printStar(1);
printSpace(2*(k - 1)-1);
if(k != 1)
printStar(1);
printf("\n");
}
}
zhaoliu:
#ifndef exe_zhaoliu_h
#define exe_zhaoliu_h
void Test2(int n);
#endif /* exe_zhaoliu_h */
#import <Foundation/Foundation.h>
#import "exe_zhangsan.h"
#import "exe_lisi.h"
void Test2(int n)
{
for (int k = 1,j = n; k <= n; k ++,j--) {//n層
printSpace(2*j-1);//前面的空格
printStar(1);//第一個星
printSpace(2*(k - 1)-1);//中間的空格
printSpace(2*(k - 1));
if (k > 1) {
printStar(1);//後面的星
}
printf("\n");
}
}
main:
#import <Foundation/Foundation.h>
#import "exe_zhangsan.h"
#import "exe_lisi.h"
#import "exe_wangwu.h"
#import "exe_zhaoliu.h"
int main()
{
@autoreleasepool {
Test1(10);
printf("----------------\n");
Test2(10);
}
return 0;
}