小知识
史佳和
这个作者很懒,什么都没留下…
展开
-
循环中对循环变量操作的的题目应当注意不要使循环变量在循环内部被随意改变
循环中对循环变量操作的的题目应当注意不要使循环变量在循环内部被随意改变很多题目需要对循环变量做文章,常见的有各种“找xx数”,例如找素数,找水仙花数等等。找素数只是把每次的循环变量i拿来嵌套一个循环尝试去除它,水仙花数为了首先确定数字位数,却要不断/=10,通过赋值来保留操作痕迹,直到i变成0,这层循环结束。但这种在循环内部修改循环变量的操作很容易导致死循环,i刚加起来就被归零。所以在写这种程序的时候,尤其要注意使用临时变量来代替i被“削”例子如下:找到10000以内的所有水仙花数(不一定是三位数,事原创 2021-01-08 13:56:14 · 571 阅读 · 1 评论 -
数组名的不作为首元素地址的两种特殊情况
数组名的不作为首元素地址的两种特殊情况数组名在大部分情况下都作为首元素地址,可以通过*(数组名+i)找到下标为i的元素,但两种特殊情况除外情况一:sizeof中单独放一个数组名(必须在定义该数组的语句块内部,而非传参)int main(void){ int arr[10] = { 0 }; printf("%d", sizeof(arr)); return 0;}程序运行结果为40,使用sizeof(arr)/sizeof(arr[0]);是计算数组中元素个数的一个好方法,在这种情况下数原创 2021-01-07 15:21:32 · 777 阅读 · 0 评论 -
数组名不能进行自增等操作来使数组名指向别的元素,但传参或再定义一个指针后可以
数组名不能进行自增等操作来使数组名指向别的元素,但传参或再定义一个指针后可以#include<stdio.h>int test(int *arr);int main(void){ int i = 0; int arr[10] = { 0 }; int *parr = arr; parr += 3; for (i = 0; i < 10; i++)//直接在定义数组的语句块内部对数组名进行赋值是不合法的,这个数组名虽然是首元素地址但不能被改动 { *(arr + i)原创 2021-01-07 15:09:38 · 752 阅读 · 0 评论