一、数组的地址
实例1
#include <stdio.h>
int main()
{
int a[10];
printf("%p\n", &a);
printf("%p\n", a);
printf("%p\n", &a[0]);
printf("%p\n", &a[1]);
return 0;
}
运行结果
实例2
#include <stdio.h>
int main()
{
double a[] = { 1000.0, 2.0, 3.4, 7.0, 50.0 };
double* b = a + 1;
double* c = a + 2;
printf("%lf,%lf\n", *b, *c);
printf("%lf", *a);
return 0;
}
运行结果
二、指针的使用
实例1
#include <stdio.h>
void f(int* p);
void g(int k);
int main()
{
int i = 6;
printf("&i=%p\n", &i);
f(&i);
g(i);
return 0;
}
void f(int* p)
{
printf("p=%p\n", p);
printf("*p=%d\n", *p);
}
void g(int k)
{
printf("k=%d\n", k);
}
运行结果
实例2
#include <stdio.h>
void f(int* p);
void g(int k);
int main()
{
int i = 6;
printf("&i=%p\n", &i);
f(&i);
g(i);
return 0;
}
void f(int* p)
{
printf("p=%p\n", p);
printf("*p=%d\n", *p);
printf("p[0]=%d\n", p[0]);
}
void g(int k)
{
printf("k=%d\n", k);
}
运行结果
三、数组名加1的含义
实例1
#include <stdio.h>
int main()
{
double a[] = { 1000.0, 2.0, 3.4, 7.0, 50.0 };
double* b = a + 1;
double* c = a + 2;
printf("%lf,%lf", *b, *c);
return 0;
}
运行结果
实例2
#include <stdio.h>
int main()
{
double a[] = { 1000.0, 2.0, 3.4, 7.0, 50.0 };
double* b = a + 1;
double* c = a;
printf("%lf,%lf", *b, *(c + 1));
return 0;
}
运行结果
四、数组的集成初始化
实例1
#include <stdio.h>
int main()
{
int a[] = { 2,4,6,8,1,3,5,7,9,18,14,10};
int i;
for (i = 0; i < 12; i++) {
printf("%d\t", a[i]);
}
printf("\n");
return 0;
}
运行结果
实例2
#include <stdio.h>
int main()
{
int a[12] = { 2 };
int i;
for (i = 0; i < 12; i++) {
printf("%d\t", a[i]);
}
printf("\n");
return 0;
}
运行结果
实例3
#include <stdio.h>
int main()
{
int a[12] = { [1] = 2,4,[5] = 6 };
int i;
for (i = 0; i < 12; i++) {
printf("%d\t", a[i]);
}
printf("\n");
return 0;
}
运行结果
五、数组的大小
实例
#include <stdio.h>
int main()
{
int a[12] = { [1] = 2,4,[5] = 6 };
int i;
printf("%d\n", sizeof(a));
printf("%d\n", sizeof(a[0]));
for (i = 0; i < sizeof(a) / sizeof(a[0]); i++) {
printf("%d\t", a[i]);
}
printf("\n");
return 0;
}
运行结果
六、数组的赋值
实例
#include <stdio.h>
int main()
{
int i;
int a[] = { 2,4,6,8,1,3,5,7,9,18,14,10 };
int b[sizeof(a) / sizeof(a[0])];
for ( i = 0; i < sizeof(a) / sizeof(a[0]); i++) {
printf("%d\t", a[i]);
}
printf("\n");
for ( i = 0; i < sizeof(a) / sizeof(a[0]); i++) {
b[i] = a[i];
printf("%d\t", b[i]);
}
return 0;
}
运行结果
注意
不能类似于如下情况进行赋值,是错误的
#include <stdio.h>
int main()
{
int a[] = { 2,4,6,8,1,3,5,7,9,18,14,10 };
int b[] = a;
return 0;
}
|