memset赋值整形数组出现的问题

#include <iostream>
#include <string>

using namespace std;

int main()
{
    char a[10];
    int b[10];
    memset(a, ‘*‘, sizeof(a));
    memset(b, 1, sizeof(b));
    cout << a << endl;
    cout << b << endl;
    system("pause");
}

输出结果:

**********
0x22ff00
请按任意键继续. . .

为什么不能int数组不能直接输出?--------> C/C++没有对应的重载函数;

那么cout << b[0]<< endl;

是否会输出1呢?

结果输出:

16843009
请按任意键继续. . .

why 16843009 ?

因为memset函数是按字节给数组赋值。 int数组一个元素有4个字节 那么就是00000001 00000001 00000001 00000001

就等于16843009,就完成了对一个int元素的赋值了。

所以用memset对非字符型数组赋初值是不可取的!

当然,可以用memset(b,0,sizeof(b)) 或者memset(b,0, 10 * sizeof(int))来清零.

时间: 2024-11-05 02:28:02

memset赋值整形数组出现的问题的相关文章

hdu--1711--kmp应用在整形数组--Number Sequence

/* Name: hdu--1711--Number Sequence Author: shen_渊 Date: 16/04/17 19:58 Description: 第一次知道,KMP能用在整形数组 o(╯□╰)o */ #include<cstring> #include<iostream> using namespace std; int kmp(); void getFail(); int n,m; int s1[1000009],s2[10009]; int f[100

memset 赋值

这几天做图论的 最小生成树和最短路 什么的. 整了整memset,把我对memset的理解说下吧,以后有新体会再加上来. 相信大家都会用string.h下的memset 赋值吧. 很简单,特别是对于搜索时候 vis数组的赋值,最小生成树和最短路的used数组也不错. 但是,都知道memset只能赋0和1, 内部机构是通过按位来实现的. 而这次,来讲一下memset赋大值. 我们可以用memset赋 0xkfkfkfkf 的值(k=1,2,3..7) 后面8,9对于int型有些超范围啊 这样,我们

关于求出两个整形数组不同元素,要求效率最高

由于两个数组,一比较就会出现两次for循环,所以我能想到的就是组合求出现次数,这样子,就不会出现两次for循环,上代码,希望有看到的提出更好的方法 1 #include <iostream> 2 using namespace std; 3 4 void printarray(int *arr, int size) 5 { 6 if (arr == nullptr) 7 { 8 return; 9 } 10 cout << endl; 11 for (int i = 0; i &l

C语言 有一个整形数组a,有10个元素,要求输出数组中的全部元素

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">有一个整形数组a,有10个元素,要求输出数组中的全部元素</span> 解题思路:引用数组中各元素的值有3种方法:1.下标法,如a[3];2.通过数组名计算数组元素的地址,找出元素的值 3.用指针变量指向数组元素. //用指针变量指向数组元素 #include <std

Java实现升序排列的整形数组A,元素两两不相等找出A[i]=i的数据

import java.util.ArrayList; //升序排列的整形数组A,元素两两不相等.请设计高效的算法找出A[i]=i的数据. //使用二种方法 public class BinarySearch { public static void main(String[] args) {     int[] nums={-1,1,2,3};     ArrayList<Integer> res=find(nums);     for(int e:res){      System.out

&lt;笔试&gt;&lt;面试&gt;编写一个排序函数,实现,既可以排序整形数组,又可以排序字符串。

思路:仿照qsort函数运用函数指针实现排序整形数组.排序字符串的功能. 首先,编写整形数组比较函数和字符串比较函数:其次,仿照qsort函数将首元素地址.元素个数.元素大小.比较函数 传参编写熟悉的冒泡排序函数:最后,举例验证函数正确性. /******************************/ //1.编写冒泡排序,可以排序整形数组,也可以排序字符串. #include<stdio.h> #include<stdlib.h> #include<assert.h&g

随机数,字符数组与整形数组的捆绑排序

13.(***)模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用A.B.C.D表示,当选某候选人时,直接输入其编号(编号由计算机随机产生), 若输入的不是A.B.C.D则视为无效票,选举结束后按得票数从高到低输出候选人编号和所得票数. 要求:取随机数,通过随机数结果判断选票结果并存储到数组中,然后通过下表同时将整形数组与对应的字符数组排序,输出结果. int main() { int people_num; printf("输入群众人数:"); scanf("

华为测试 整形数组合并

合并输入的两个整形数组并去掉重复的数字按升序输出: 案例输入:3 1 2 5 4 -1 0 3 2 案例输出:-101 #include<iostream> #include<vector> using namespace std; void maopao(vector<int>&arry); int main() { int N1,N2,num; string line; vector<int>arry1; cin>>N1; for(i

回调函数实现对整形数组和字符串的排序

(一)冒泡排序实现对整形数组的排序 在以前,我们只会使用冒泡排序的方法对整行数组进行排序,简单的两个for循环,外层循环控制循环次数,内层循环控制比较次数,就像下面代码,便可实现: #include<stdio.h> int main() { int arr[10]={11,9,8,7,6,5,4,3,2,1}; int i=0; int j=0; int tmp=0; for(j=0;j<10;j++) { for(i=0;i<10-j;i++) if(arr[i]>arr