一维数组:
#include <stdio.h>
int b[5]; //未初始化的全局变量是0
int main()
{
int i;
//int array[5]; //未初始化的局部变量是垃圾值
//int array[5] = {1, 2, 3, 4, 5};
//int array[5] = {1, 2}; //对部分元素初始化,其他未初始化元素为0
int array[] = {1, 2, 3, 4 ,5};
for (i = 0; i < sizeof(array) / sizeof(array[0]); i++)
{
printf("%d ", array[i]);
}
printf("\n");
printf("%p\n", &array[0]); //数组首元素地址,单位是4字节
printf("%p\n", array); //array是数组名,同时也是数组首元素地址,单位是4字节
printf("%p\n", &array); //数组的地址,单位是一个数组,20字节
printf("*****************\n");
printf("%p\n", &array[0] + 1);
printf("%p\n", array + 1);
printf("%p\n", &array + 1);
return 0;
}
二维数组:
#include <stdio.h>
int main()
{
int i, j;
//int a[4][3];
//int a[4][3] = {1, 2, 3, 4, 5 ,6, 7, 8, 9, 10, 11, 12};
//int a[4][3] = {{1, 2, 3}, {2, 3, 4}, {3, 4, 5}, {7, 9, 8}};
//int a[4][3] = {1, 2};
//int a[4][3] = {{1}, {2, 3}, {3, 4}, {5}};
//int a[][3] = {1, 2, 3, 4, 5 ,6, 7, 8, 9, 10, 11, 12}; //定义方法
int a[4][3] = {0};
for (i = 0; i < 4; i++)
{
for (j = 0; j < 3; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
}
printf("%p\n", &a[0][0]); //首元素的地址,单位4字节
printf("%p\n", a[0]); //首行首元素地址,单位4字节
printf("%p\n", &a[0]); //首行的地址,单位12字节
printf("%p\n", a); //首行的地址,单位12字节
printf("%p\n", &a); //数组的地址,单位48字节
printf("***********************\n");
printf("%p\n", &a[0][0] + 1);
printf("%p\n", a[0] + 1);
printf("%p\n", &a[0] + 1);
printf("%p\n", a + 1);
printf("%p\n", &a + 1);
printf("******************\n");
printf("%p %p\n", a[1], *(a + 1)); //[x] ======== *(a + x)
return 0;
}
字符数组:
#include <stdio.h>
int main()
{
#if 0
int i;
char a[10] = {'a', 'b', 'c', 'd'};
for (i = 0; i < 10; i++)
{
printf("%c", a[i]);
}
printf("\n");
#endif
char a[11] = "helloworld";
printf("%s\n", a);
scanf("%s", a);
printf("%s\n", a);
return 0;
}
strcat(str,ptr);把字符串ptr接到str后
strcpy(str,ptr);把ptr指向的字符串拷贝到str(包含\0且覆盖原始的字符串)
strcmp(str,ptr);逐个比较字母大小(遇到不同的停止)
#include <stdio.h>
#include <string.h>
int main()
{
/*
char str[20] = "hello";
char ptr[20] = "world";
strcat(str, ptr); //将字符串ptr连接到str后面
printf("%s\n", str);*/
/* char str[20] = "helloworld";
char ptr[20] = "world";
//strcpy(str, ptr); //字符串拷贝函数 把ptr指向的字符串拷贝到str里 包含'\0'
strncpy(str, ptr, 3);
printf("%s\n", str);*/
//字符串赋值
/*1、char str[20] = "hello";
2、char str[20];
str[0] = 'h';
str[1] = 'e'
...
3、strcpy(str, "hello");
错误:char str[20];
str = "helloworld";*/
char str[20] = "hello";
char ptr[20] = "world";
if (strcmp(str, ptr) == 0)
{
printf("字符串相等\n");
}
else if (strcmp(str, ptr) > 0)
{
printf("%s 大于 %s\n", str, ptr);
}
else if (strcmp(str, ptr) < 0)
{
printf("%s 小于 %s\n", str, ptr);
}
if (strncmp(str, ptr, 1) < 0)
{
printf("%s 小于 %s\n", str, ptr);
}
return 0;
}
register 寄存器变量
#include <stdio.h>
int main()
{
register int a = 1; //定义一个寄存器变量 a存放在寄存器中
&a; //& 取的是内存的地址,
return 0;
}
冒泡法排序(函数调用的方法)
#include <stdio.h>
void GetArray(int a[], int length)
{
int i;
printf("Please input:\n");
for (i = 0; i < length; i++)
{
scanf("%d", &a[i]);
}
}
void sort(int a[], int length)
{
int i, j, tmp;
for (i = 0; i < length - 1; i++)
{
for (j = 0; j < length - i - 1; j++)
{
if (a[j + 1] < a[j])
{
tmp = a[j + 1];
a[j + 1] = a[j];
a[j] = tmp;
}
}
}
}
void print(int a[], int length)
{
int i;
for (i = 0; i < length; i++)
{
printf("%d ", a[i]);
}
printf("\n");
}
int main()
{
int i, j, tmp;
int a[10] = {0};
int length = sizeof(a) / sizeof(a[0]);
GetArray(a, length);
sort(a, length);
print(a, length);
return 0;
}