摸你穷 发表于 2022-2-5 15:39:35

如何获取二维数组的长度

如何获取二维数组的长度

人造人 发表于 2022-2-5 15:39:36

$ cat main.c
#include <stdio.h>

int d0;

void func(int x0) {
    printf("x0: %lu\n", sizeof(x0));
}

int main(void) {
    int d1 = {0};
    printf("d0: %lu\n", sizeof(d0));
    printf("d1: %lu\n", sizeof(d1));
    func(d1);
    return 0;
}
$ gcc-debug -o main main.c
main.c: In function ‘func’:
main.c:6:31: warning: ‘sizeof’ on array function parameter ‘x0’ will return size of ‘int (*)’ [-Wsizeof-array-argument]
    6 |   printf("x0: %lu\n", sizeof(x0));
      |                               ^
main.c:5:15: note: declared here
    5 | void func(int x0) {
      |         ~~~~^~~~~~~~~~
$ ./main
d0: 800
d1: 2400
x0: 8
$

人造人 发表于 2022-2-5 15:49:18

如果没有作为参数传递过的话,可以用 sizeof

$ cat main.c
#include <stdio.h>

int d0;

void func(int x0) {
    printf("x0: %lu\n", sizeof(x0) / sizeof(x0));
}

int main(void) {
    int d1 = {0};
    printf("d0: %lu\n", sizeof(d0) / sizeof(d0));
    printf("d1: %lu\n", sizeof(d1) / sizeof(d1));
    func(d1);
    return 0;
}
$ gcc-debug -o main main.c
main.c: In function ‘func’:
main.c:6:31: warning: ‘sizeof’ on array function parameter ‘x0’ will return size of ‘int *’ [-Wsizeof-array-argument]
    6 |   printf("x0: %lu\n", sizeof(x0) / sizeof(x0));
      |                               ^
main.c:5:15: note: declared here
    5 | void func(int x0) {
      |         ~~~~^~~~~~
$ ./main
d0: 10
d1: 20
x0: 2
$

摸你穷 发表于 2022-2-5 16:01:03

人造人 发表于 2022-2-5 15:52


不能使用strlen函数吗

人造人 发表于 2022-2-5 16:05:39

摸你穷 发表于 2022-2-5 16:01
不能使用strlen函数吗

strlen 函数是做什么用的?

人造人 发表于 2022-2-5 16:07:25

摸你穷 发表于 2022-2-5 16:01
不能使用strlen函数吗

求数组的长度?

人造人 发表于 2022-2-5 16:09:29

是求字符串的长度吧
字符串的长度可不等于数组的长度
$ cat main.c
#include <stdio.h>
#include <string.h>

int main(void) {
    char str = "hello";
    printf("%lu\n", strlen(str));
    return 0;
}
$ gcc-debug -o main main.c
$ ./main
5
$

摸你穷 发表于 2022-2-5 16:09:31

人造人 发表于 2022-2-5 16:05
strlen 函数是做什么用的?

哦哦哦了二位数组输入的是字符串怎么整

人造人 发表于 2022-2-5 16:10:05

摸你穷 发表于 2022-2-5 16:09
哦哦哦了二位数组输入的是字符串怎么整

二维数组输入字符串?

人造人 发表于 2022-2-5 16:12:41

$ cat main.c
#include <stdio.h>
#include <string.h>

int main(void) {
    char *str = {
      "hello",
      "word",
      "1234abcd",
      NULL
    };
    for(size_t i = 0; str; ++i) {
      printf("%.2lu: %s\n", strlen(str), str);
    }
    return 0;
}
$ gcc-debug -o main main.c
$ ./main
05: hello
04: word
08: 1234abcd
$

摸你穷 发表于 2022-2-5 16:13:09

人造人 发表于 2022-2-5 16:10
二维数组输入字符串?

哦    直接strlen(变量名)就可以了懂了懂了

人造人 发表于 2022-2-5 16:14:32

$ cat main.c
#include <stdio.h>
#include <string.h>

int main(void) {
    char str = {
      "hello",
      "word",
      "1234abcd",
    };
    for(size_t i = 0; i < 3; ++i) {
      printf("%.2lu: %s\n", strlen(str), str);
    }
    return 0;
}
$ gcc-debug -o main main.c
$ ./main
05: hello
04: word
08: 1234abcd
$
页: [1]
查看完整版本: 如何获取二维数组的长度