-
数组的指针
在c中,几乎所以使用数组名的表达式中,数组名的值是一个指针常量,也就是数组 第 一个元素的地址。注意这个值是指针常量,不是变量。
int a[10]={ ….....};
int *q;
q=&a[0] ; <=> q=a; //这两句是等价的。
但是,a=q 是非法的,因为a是常量。
a[5]=*(a+5) //数组下标等价于数组的指针间接寻址。
int a[10]={….....};
int *p=a; //一定要理解,非常重要。
注意 int *p 是定义的p为整型指针变量,如初始化必须是指针类型值。
如:
char c='a';
char *q= &c;
到现在就可以很好理解scanf输入什麽时候加&符号了
如:
char c[10];
int t;
scanf("%s",c); //因为c就是指针类型。
scanf("%d",&t); //注意t前面必须加& 地址符号。
2. #define A B 把b自定义 A
如定义字符串: #define HELLO "hello world"
定义数值 #define LEN 10
3. const 修饰,表示不可变
const int t[10] 不可变数组
const int t=10 不可变变量
4. c 语言的字符串就是以\0结尾的数组。scanf 输入时系统自动加如\0 空白符。
c语言的字符串定义:
先定义字符串 c : char c [ 20]={.......... ,'\0'};
程序中可以直接用c 代表字符串了
printf 函数可以直接输出 字符串数组。如不加空白符,那是字符数组 .printf() 也能直接输出 字符数组。这和java 输出数组就有区别。
char c[20];
scanf("%s",c);
printf("%s\n",c); //直接输出。