昨天,当讲师要我确认我是否熟悉时 指针,我告诉他我完全熟悉,这对我来说似乎很容易。
然而,我认为我犯了一个可怕的错误,因为那时他给我分配了打印的任务"我非常卑鄙"使用所有标准数据类型(没有声明指针)和printf
只有一个参数,没有类型转换,字符文字,算术或循环。
他说,程序员学习如何以这种方式适应极其有限/几乎不可能的情况。
从那以后我所有的努力都导致了死胡同。
我甚至不是程序员。
答案 0 :(得分:2)
你的讲师似乎非常残忍。不是因为任务,而是因为他想要的短语 你打印。
假设问题是“如何在没有实际打印字符串的情况下打印字符串”,那么我的问题可能有效。
无论如何,在这种情况下你需要做的第一件事就是完全理解这个任务。
如果你这样做......你会注意到他想要你打印的短语的大小是
保证大小为sizeof(char) + sizeof(short) + sizeof(int) + sizeof(long long)
(特别是在x64位架构上)
那是1 + 2 + 4 + 8 .. 15。
因此,他可能希望您使用一个结构,以便将这些结构打包并为字符串提供足够的空间,而无需手动分配。
#include <stdio.h>
#include <string.h>
#define phrase "I am very ignoble"
struct DATATYPES
{
unsigned char first; // I
unsigned short second; // am
size_t third; // very
unsigned long long fourth; // ignoble\0
} datatypes;
int main (void)
{
memmove(&datatypes, phrase, sizeof(phrase));
printf("%s", &datatypes);
return(0);
}
使用minGW编译器编译-Wall -Wextra -pedantic
0错误,0警告
定义明确的行为,相对安全
答案 1 :(得分:0)
简单方法:
printf( "I am very ignoble\n" );
没有指针,没有数组,没有什么