初识指针
1#define _CRT_SECURE_NO_WARNINGS 1 2 3/************************************************ 4 * @Title:> brief 5 * @Description:> brief 6 * @author:> HuaGe 7 * @date:> 2020/10/29 8:46 8 ************************************************* 9*笔记: 101、一般情况数组名就是首元素地址 11( 特殊1:sizeof(数组名)--此时的数组名表示整个数组,计算整个数组大小,单位是字节; 12 特殊2:&数组名--表示取出整个数组的地址,但整个数组的地址和首元素地址值一样,但意义不一样。) 132、数组名只是一个地址(不可变),而指针是一个左值(可变) 143、指针数组: 15 char *p[] = { "I Love You!","meet you" }; 16 17 for (int i = 0; i < 2 ; i++){ 18 printf("%s\t", p[i]);//%s通过字符串的首地址来输出整个字符串 19 } 204、数组指针 21 int (*p2)[4] = &arr;//(*p2)[4]数组指针指向的是整个数组,*p2是数组的地址 22************************************************/ 23 24#include <stdio.h> 25 26int main() 27{ 28 int arr[] = { 1,5,3,7 }; 29 int *p = arr;//p指向的是数组的第一个元素的地址,并不是指向整个数组 30 int (*p2)[4] = &arr;//(*p2)[4]数组指针指向的是整个数组 31 32 for (int i = 0; i < 4; i++) { 33 printf("%d\t", *(*p2+i)); 34 } 35 36 return 0; 37}
操作符
*笔记:
1、>> 右移符号位,移的是二进制位,右边丢弃,左边补0(正数)或补1(负数),有除2的效果。
2、<< 左移操作符,二进制左移一位,右边补零。(注:不支持移动负位(如a>>-1),且只作用于整数)

1//题1、编写代码,求一个整数存储在内存的二进制中1的个数 2void num_1(int x) 3{ 4 int flag = 0; 5 int input = 0; 6 printf("请输入一个整数:"); 7 scanf("%d", &input); 8 9 for (int i = 0; i < 32; i++) { 10 if (((input >> i) & 1) == 1) { 11 flag++; 12 } 13 } 14 printf("%d二进制中1的个数为:%d\n",input,flag); 15} 16 17int main() 18{ 19 int a = 8; 20 num_1(a); 21 22 return 0; 23 }