本实例通过一些更改可以一次读取长字符,并一个一个显示 ASCII 码。
#include <stdio.h> #define MAX_STRING_LENGTH 65535 // 最大字符串长度 int main(){ char s[MAX_STRING_LENGTH]; printf("请输入长度小于 %d 的任意字符:",MAX_STRING_LENGTH); scanf("%s",s); // 读取字符串。 for(int i = 0; s[i]; i++){ printf("%c的ASCII:%d\t",s[i],s[i]); } }
C 不支持在调用函数时返回局部变量的地址,除非定义局部变量为 static 变量。
因为局部变量是存储在内存的栈区内,当函数调用结束后,局部变量所占的内存地址便被释放了,因此当其函数执行完毕后,函数内的变量便不再拥有那个内存地址,所以不能返回其指针。
除非将其变量定义为 static 变量,static 变量的值存放在内存中的静态数据区,不会随着函数执行的结束而被清除,故能返回其地址。
指针数组:表示的是一个由指针变量组成的数组,也就是说其中的元素都是指针变量。
数组指针:表示的是这是个指向数组的指针,那么该指针变量存储的地址就必须是数组的首地址,得是个指向行的地址,如 a[2][3] 数组中的 a,a+1 等,不能是具体的指向列的地址,如 &a[0][1], &a[1][1] 这类地址。
指针数组和数组指针的区别
指针数组
指针数组:指针数组可以说成是”指针的数组”,首先这个变量是一个数组。
其次,”指针”修饰这个数组,意思是说这个数组的所有元素都是指针类型。
在 32 位系统中,指针占四个字节。
数组指针
数组指针:数组指针可以说成是”数组的指针”,首先这个变量是一个指针。
其次,”数组”修饰这个指针,意思是说这个指针存放着一个数组的首地址,或者说这个指针指向一个数组的首地址。
据上面的解释,可以了解到指针数组和数组指针的区别,因为二者根本就是种类型的变量。
关于 double 类型与 float 类型:
printf() 只会看到双精度数,printf 的 %f 格式总是得到 double,所以在 printf() 中使用 %f 跟 %lf 的输出显示效果是一样的。但是对于变量来说,double 类型比 float 类型的精度要高。double 精度更高,是指它存储的小数位数更多,但是输出默认都是 6 位小数,如果你想输出更多小数,可以自己控制,比如 %.10lf 就输出 10 位小数。
所以一般情况下 double 类型的占位符可以用 %lf。
更多内容可参考:float 与 double 类型区别
感谢您的支持,我会继续努力的!
支付宝扫一扫,即可进行扫码打赏哦
1585c-examples-ascii-value-character
本实例通过一些更改可以一次读取长字符,并一个一个显示 ASCII 码。
1584c-return-pointer-from-functions
C 不支持在调用函数时返回局部变量的地址,除非定义局部变量为 static 变量。
因为局部变量是存储在内存的栈区内,当函数调用结束后,局部变量所占的内存地址便被释放了,因此当其函数执行完毕后,函数内的变量便不再拥有那个内存地址,所以不能返回其指针。
除非将其变量定义为 static 变量,static 变量的值存放在内存中的静态数据区,不会随着函数执行的结束而被清除,故能返回其地址。
1583c-array-of-pointers
指针数组:表示的是一个由指针变量组成的数组,也就是说其中的元素都是指针变量。
数组指针:表示的是这是个指向数组的指针,那么该指针变量存储的地址就必须是数组的首地址,得是个指向行的地址,如 a[2][3] 数组中的 a,a+1 等,不能是具体的指向列的地址,如 &a[0][1], &a[1][1] 这类地址。
1582c-array-of-pointers
指针数组和数组指针的区别
指针数组
指针数组:指针数组可以说成是”指针的数组”,首先这个变量是一个数组。
其次,”指针”修饰这个数组,意思是说这个数组的所有元素都是指针类型。
在 32 位系统中,指针占四个字节。
数组指针
数组指针:数组指针可以说成是”数组的指针”,首先这个变量是一个指针。
其次,”数组”修饰这个指针,意思是说这个指针存放着一个数组的首地址,或者说这个指针指向一个数组的首地址。
根据上面的解释,可以了解到指针数组和数组指针的区别,因为二者根本就是种类型的变量。
1581c-pointer-to-an-array
关于 double 类型与 float 类型:
printf() 只会看到双精度数,printf 的 %f 格式总是得到 double,所以在 printf() 中使用 %f 跟 %lf 的输出显示效果是一样的。但是对于变量来说,double 类型比 float 类型的精度要高。double 精度更高,是指它存储的小数位数更多,但是输出默认都是 6 位小数,如果你想输出更多小数,可以自己控制,比如 %.10lf 就输出 10 位小数。
所以一般情况下 double 类型的占位符可以用 %lf。
更多内容可参考:float 与 double 类型区别