C语言程序设计:现代方法4

时间:2022-01-17 04:57:14

11.指针

1.const int * pOne; //指向整形常量 的指针,它指向的值不能修改
2.int * const pTwo; //指向整形的常量指针 ,它不能在指向别的变量,但指向(变量)的值可以修改。

指针并不一定总是地址

由于字存储可能大于实际存储变量的长度,那么就需要采用地址+偏移量的表示方法。在intel处理器中,可以采用near的16位偏移量,或far32位偏移量对,偏移量不是真正的地址,cpu需将它与特殊寄存器中段的值联合起来。

12.指针和数组

指针也可以比较大小,当两个指针指向同一数组时。

在标准C中,即使数组a[size]不存在,但对他的取地址仍然合法。

C语言程序设计:现代方法4

/* 处理一行 */
int a[10][10];
int* p;
for(p = a[0]; p < a[0] + COL; p++) *p = 0; /* 处理一列 */ int (*p1)[COL]; for(p1 = a; p < a + COL; p++) (*p)[i] = 0;

数值型形参和指针型形参是可以互换的,但是对于变量来说却完全不同,比如sizeof。

13.字符串

八进制的字符转义序列最到3个或读到非8进制的数。

/* 字符串写不下了 */
//缺点是不能缩进了。
printf("asdadas. \ adasd\n");
//比较好
printf("asdadas."
       "adasd\n");
//骚操作
char digitToHex(int digit)
{
  return "0123456789ABCDEF"[digit];
}

#define STR_LEN 80
char a[STR_LEN + 1];

//编译一旦结束,c的长度就结束了,并不是可变的
char c[] = "adasd";
//输出可以用
puts(const char* );
gets();
scanf("%ns", );
//当然fgets会更安全些,scanf要格式化%ns,控制一下长度